2011-06-04 101 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