2017-01-27 2 views
0

Meine Listenansicht hat eine Schaltfläche pro Zeile. Wenn ich geklickt habe, ändere ich diese Linienfarbe. Das Problem ist beim Scrollen ... Zurück zur Standardeinstellung oder andere Linien sind farbig.Listenansicht beim Scrollen farbig halten

wird der Button Hören innerhalb des Adapters codiert

public CustomAdapter(Context context, List<Map<String, String>> items, int resource, String[] from, int[] to) { 
    super(context, items, resource, from, to); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position, convertView, parent); 

    final View line = view; 
    TextView txtid = (TextView) view.findViewById(R.id.txtid); 
    TextView txtnumber = (TextView) view.findViewById(R.id.txtnumber); 

    Button btn = (Button) view.findViewById(R.id.btncheck); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if (txtnumber.getText().toString().equals(KEY-CODE)){ 
       line.setBackgroundColor(0x7F00FF00); 
      }else { 
       line.setBackgroundColor(0x7FFF0000); 
      } 
     } 
    });   

    return view; 
} 
+0

fügen Sie die Farbe zu dem Artikel in der Liste, die Sie in der Ansicht laden und klicken Sie auf Ändern Sie den Wert dieses Elements (Sie erhalten bereits die Position) – zombie

Antwort

1

ich somthing wie dies einmal konfrontiert, können Sie den Status der Schaltfläche mit HashMap speichern kann, wo die die boolean den Zustand der Taste (true, wenn es zeigen wurde geklickt und false otherwhise), weiß in getItemView, ob die aktuelle Schaltfläche angeklickt wurde oder nicht von der HashMap.

Ein wenig Code:

innen getItemView zunächst jede Taste auf false initialisiert werden (nicht geklickt)

if(map.get(v.findViewById(R.id.button)) == null) 
     map.put(v.findViewById(R.id.button)),false); 

und nach auf die Schaltfläche die Boolesche auf true gesetzt klicken:

map.put(v.findViewById(R.id.button)),true); 

und schließlich prüfen, ob der Boolean auf wahr oder falsch gesetzt ist und die Farbe einstellen.

+0

und diesen Fall müssen Sie es nach dem Klick neu laden? – user1801745

+0

Ich verstehe deine Frage nicht ganz, was willst du damit neu laden? –

+0

Laden Sie die Liste neu, um neue Werte für die Färbung anzunehmen – user1801745

Verwandte Themen