2016-07-28 68 views
0

我的listview中的某些項目需要在特定情況下禁用。禁用表示它們變灰,不能再點擊。需要禁用的頭寸存儲在名爲positions_to_disableArrayList中。禁用點擊和灰色列表視圖項目[Android]

我已經成功地完成這個任務的一部分:我通過重寫適配器的方法​​

@Override 
public boolean isEnabled(int position) { 

     for (int j = 0; j < FromWhereActivity.positions_to_disable.size(); j++) { 
      if (position == FromWhereActivity.positions_to_disable.get(j)) { 
       return false; 
      } 
     } 
    return super.isEnabled(position); 
} 

但是對這些項目禁用點擊,我還沒有找到一種方法,灰色出來。如果我試圖用重寫適配器的方法View getView(int i, View view, ViewGroup viewGroup)做同樣的事情,滾動時我會看到更多的項目變灰,可能是因爲此方法只計算可見項目而不是計算適配器中的所有項目。 我該如何解決這個問題?

+0

嘗試從'listView'和lastVisibleItem得到firstVisibleItem。然後從頭到尾將它們變灰,我認爲這應該起作用... – David

回答

0

你只需要在列表項的背景設爲StateListDrawable具有不同的顏色爲殘疾:

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_enabled="false" 
     android:drawable="@drawable/list_item_disabled"/> 

    <item 
     android:drawable="@drawable/list_item_normal"/> 

</selector> 

State List | Android Developers

相關問題