1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. setreset, 02.09.2010 #1
    setreset

    setreset Threadstarter Neuer Benutzer

    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
     
  2. ko5tik, 02.09.2010 #2
    ko5tik

    ko5tik Android-Experte

    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?
     
  3. setreset, 02.09.2010 #3
    setreset

    setreset Threadstarter Neuer Benutzer

    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: 02.09.2010
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[GESCHLOSSEN] Random ListItem ausgeben funktioniert nicht mehr Android App Entwicklung 13.08.2017
[OFFEN] Bild per Intent an ListView übergeben und anzeigen Android App Entwicklung 13.08.2017
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[ERLEDIGT] Drawer mit scrollbarem Listview Android App Entwicklung 27.03.2017
ListView fix am unteren Bildschirmrand ausgeben Android App Entwicklung 01.03.2017
ProgressBar in ListView Android App Entwicklung 03.01.2017
ListView Element an eine Datenbank senden Android App Entwicklung 04.12.2016
ListView Items verknüpfen Android App Entwicklung 06.10.2016
AlertDialog Listview mit ContextMenu Android App Entwicklung 01.10.2016
Du betrachtest das Thema "Listview mit Chronometer" im Forum "Android App Entwicklung",