2016-07-28 22 views
0

Einige Artikel in meiner listview Notwendigkeit, in bestimmten Situationen deaktiviert werden. Deaktiviert bedeutet, dass sie ausgegraut und nicht mehr anklickbar sind. Positionen, die deaktiviert werden müssen, werden in ArrayList mit dem Namen positions_to_disable gespeichert.deaktivieren klicken und graut Listenansicht Artikel [Android]

ich erfolgreich ein Teil dieser Aufgabe gemacht haben: ich auf diesen Artikel deaktiviert Klick haben durch Adapter Methode boolean isEnabled(int position);

@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); 
} 

jedoch überschreiben, fand ich keinen Weg, um ihnen grau. Wenn ich mit der Methode View getView(int i, View view, ViewGroup viewGroup) des Overriding-Adapters dasselbe versuche, bekomme ich beim Scrollen mehr Elemente ausgegraut, wahrscheinlich weil diese Methode nur sichtbare Elemente zählt, anstatt alle Elemente in meinem Adapter zu zählen. Wie kann ich dieses Problem lösen?

+0

Try firstVisibleItem von 'listView' und der lastVisibleItem zu bekommen. .. dann grau sie von Anfang bis Ende, ich denke, das sollte funktionieren ... – David

Antwort

0

Sie müssen nur den Hintergrund der Liste Element an einen StateListDrawable setzen, die eine andere Farbe für Behinderte hat:

<?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> 

Siehe State List | Android Developers

Verwandte Themen