List View Zeilenfarbe ändern

  • Antworten:2
Matteo Zmollnig
  • Forum-Beiträge: 51

07.10.2012, 09:45:44 via Website

Hallo hab eine Frage!
Ich suche schon eine Zeit lang an einem Problem, dass sich eigentlich sehr einfach anhört.
Vielleicht hab ich nur was übersehen.
Wie kann ich in einer einzelnen Zeile bei einer List View die Farbe ändern?

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

07.10.2012, 10:20:12 via Website

Das Stichwort ist im Falle eines SimpleXxxAdapter der ViewBinder - ansonsten machst Du das in Deinem Custom-Adapter. Im setViewValue des ViewBinder fließt vor dem Zeichnen jedes Feld einzeln rein und Du kannst dort eingreifen oder an die Standardverarbeitung weiterleiten

Ein Beispiel für einen SimpleCursorAdapter. Der Cursor lädt neben zwei Textfeldern zum Beispiel noch ein long mit der Bedingung. Diese Bedingung führt dann zum Markieren/Färben eines der Textfelder wenn der Wert 1 ist:

1select _id, text1, text2, dieBedingung from tabelle

1adapter = new SimpleCursorAdapter(this,
2 R.layout.row,
3 cursor,
4 new String[] { "text1", "text2" },
5 new int[] { R.id.row_text1, R.id.row_text2 } );
6if (adapter != null) {
7 adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
8
9 @Override
10 public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
11 if (view.getId() == R.id.row_text2) {
12 long dieBedingung = cursor.getLong(cursor.getColumnIndex(dieBedingung));
13 if (dieBedingung == 1) {
14 TextView textView = (TextView) view;
15 // Mach was Du willst
16 return true; // Ich habe selbst gezeichnet
17 }
18 }
19
20 return false; // Android, zeichne Du selbst
21 });
22
23 setListAdapter(adapter);
24}

— geändert am 07.10.2012, 10:24:27

Matteo Zmollnig

Antworten
Matteo Zmollnig
  • Forum-Beiträge: 51

07.10.2012, 10:25:14 via Website

Ja so in der Art hab ichs eh gehabt :) Habs hingekriegt, hab einen Fehler drin gehabt. War wohl schon ein bisschen Code-Blind :P
DANKE!

Antworten