2011-06-04 58 views
21

我有一个listView,当用户选择一个项目时,用正确答案重新显示。但是,在这一点上,我想禁用列表视图项的选择;用户只能通过按下按钮来进入下一个问题。但是,即使我禁用了这样的项目:Android:禁用ListView选择

private void disableItemSelection() { 
     ListView lv = getListView(); 
     for (int i = 0; i < lv.getChildCount(); i++){ 
      View v = lv.getChildAt(i); 
      v.setEnabled(false); 
     } 
    } 

...它仍然突出显示用户选择它时的选择。有什么想法吗?

+1

没有ü找到一个解决的办法? – aryaxt 2011-06-17 22:52:41

+0

不 - 我做了一个解决方法,如果他们再次尝试选择一个按钮,则会将它们带到下一个问题。 – 2011-11-29 15:42:18

回答

33

滚动锁定的原因是因为你在

ListView 

设置我找到了一种方法来禁用不锁定滚动突出。您需要将其设置在ListAdapter如下图所示:

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) { 
      public boolean isEnabled(int position) 
      { 
        return false; 
      } 
     }; 
+5

如果你不想要,你不需要使用ArrayAdapter。只需在自己的自定义适配器上覆盖isEnabled方法,就可以开始了! – leocadiotine 2012-09-27 16:24:22

+0

是不是表示如果有一个具有禁用状态的行的drawable,它也会改变它们的图像?是否可以禁用点击,但不能更改drawable? – 2012-12-27 12:47:37

2

我只是躲在这个选择的项目:

listView.setSelector(new ColorDrawable(0)); 

然后你通过恢复到任何再次显示它绘制它是使用以前:

wifiSsid.setSelector(R.drawable.listview_selector); 
2

我用的android:choiceMode="none"如记录​​。

+0

这只会设置如果列表项可以有一个选定的模式,但不是突出显示:( – alopix 2014-03-26 11:22:58

23

您可以添加属性的ListView XML布局,以禁用多个高光行作为

android:listSelector="@android:color/transparent"    
android:cacheColorHint="@android:color/transparent" 
+0

我认为这是最好的ansewr,总是最好在xml中设置此细节比在代码中。 – Sierisimo 2015-01-08 18:34:15