Allgemeine Frage setListAdapter -aktuelle Auswahl markieren

  • Antworten:5
rubio
  • Forum-Beiträge: 16

24.08.2011, 12:55:24 via Website

Hi,

eine Frage wie kann ich in Android das aktuelle Element aus einer Liste z.B. farbig markieren. Das ganze soll so ähnlich aussehen wie in Android 3.0 der Gmail-Client.

Vielen Dank im Voraus

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

24.08.2011, 14:21:26 via Website

Das Geheimnis ist

* die einfache Variante: Bei einem überschaubaren RowLayout und einfacher Datenbeschaffung die Verwendung von setViewBinder()

* die komplexe Variante: Bei einem umfangreichen RowLayout und komplexer Datenbeschaffung die Verwendung eines Custom Adapters.

Solange es nur um die Farbe geht reicht die einfache Variante. Um welchen Adapter handelt es sich bei Deiner ListView? Cursor, Array, ...?

— geändert am 24.08.2011, 14:22:58

Antworten
rubio
  • Forum-Beiträge: 16

24.08.2011, 14:27:49 via Website

Cursor

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

24.08.2011, 15:46:37 via Website

1if (simpleCursorAdapter != null) {
2 simpleCursorAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
3
4 @Override
5 public boolean setViewValue(final View view, final Cursor cursor, final int columnIndex) {
6 long fett = cursor.getLong(cursor.getColumnIndex(<spaltennameDesFettMarkersInLong>));
7
8 if (columnIndex == 1) {
9 TextView textView = (TextView) view;
10 if (fett == 1) {
11 textView.setTypeface(null, Typeface.BOLD);
12 } else {
13 textView.setTypeface(null, Typeface.NORMAL);
14 }
15
16 String text = cursor.getString(cursor.getColumnIndex(<spaltennameIrgendeinesTextes>));
17 if (!StringUtils.isEmpty(text)) {
18 textView.setText(text);
19 }
20
21 return true;
22 }
23
24 return false;
25 } );
26
27 setListAdapter(simpleCursorAdapter);
28}

Antworten
rubio
  • Forum-Beiträge: 16

28.08.2011, 14:43:07 via Website

Hi,

sorry das ich mich erst heute wieder melde. Vielen DAnk für deine Antwort ich habe allerdings eine Frage......

In dieser Zeile wird doch der wert an der entsprechenden Spalte ermittelt oder?

long fett = cursor.getLong(cursor.getColumnIndex("testId"));

Dann fragst du ob (fett == 1) .... das kann aber doch nie eintreffen oder?

Vielen dank im Voraus

Antworten