Listview mit Chronometer

S

setreset

Neues Mitglied
0
Hallo liebe Android-Experten,
ich habe eine Listactivity mit einem eigenen Zeilenlayout bestehend aus Textviews. Das klappt auch alles ganz gut, aber jetzt möchte ich in jede Zeile zusätzlich einen Chronometer in die Listactivity packen. Ein Chronometer ist eine Erweiterung der Textview mit der Fähigkeit sich selbst zu aktualisieren (mit eigenem Thread denke ich..) und dadurch Zeit hochzuzählen und anzuzeigen.

Ich habe einen ViewBinder, mit dem ich wunderbar die verschiedenen Textviews setzen kann (je nach Datenbankzustand), dass hätte ich auch gerne mit den Chronometern, also dass sie unabhängig voneinander laufen können. Das Problem ist, wenn ein Chronometer läuft und ein zweiter dazukommt, bekommt auch der erste Chronometer die Startzeit des zweiten. Es laufen dann zwar beide, aber die Zeit kann anscheinend nicht individuell gesetzt werden.

Ist das ein generelles Problem, dass irgendwie mit der Listview zusammenhängt?

Viele Grüße
Christian
 
Da du deinen Code nicht postest, ist es schwer zu sagen ob es ein generelles Problem ist. Aber es ist Üblich, die View-Komponenten in der Listen die gerade nicht sichtbar sind, wiederzuverwenden. Liegt es vielleich daran?
 
Kann sein, allerdings tritt der Effekt auch bei z.B. nur zwei Listeneinträgen auf und die werden komplett angezeigt. Hier zwei Codeausschnitte:

Hier werden die Datenbankfelder an den SimpleCursorAdapter übergeben, der dann der Listview zugeordnet wird. Ich habe einfach die ID's der Zeilen verwendet, weil ich später sowieso auf andere Felder zugreife.

Code:
String[] from = new String[] { TimerDbAdapter.KEY_ROWID,TimerDbAdapter.KEY_ROWID};
int[] to = new int[] { R.id.text1,R.id.chrono1};
SimpleCursorAdapter timer = new SimpleCursorAdapter(this, R.layout.timer_row, timerCursor, from, to);

Hier ist schematisch die setViewValue-Methode aus dem ViewBinder:

Code:
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
    if(view.getId()==R.id.text1){
        long counter = cursor.getLong(2);
        String x = Long.toString(counter);
        if (cursor.getString(3).equals("null")){
            ((TextView)view).setText("null "+x);                
        }else{
            ((TextView)view).setText(x);        
        }
    }else if (view.getId()==R.id.chrono1){
        if (cursor.getString(3).equals("null")){
            ((Chronometer)view).stop();
        }else{
            ((Chronometer)view).start();
        }
    }
    return true;
}
 
Zuletzt bearbeitet:

Ähnliche Themen

A
Antworten
10
Aufrufe
1.006
swa00
swa00
D
Antworten
9
Aufrufe
1.730
jogimuc
J
B
Antworten
4
Aufrufe
431
bb321
B
Zurück
Oben Unten