Android: Mehrere gleichzeitige count-down-Timer in einem ListView
Ich bin die Erstellung einer app, erfordert eine ListView mit einer unbestimmten Anzahl von Elementen, von denen jedes verfügt über einen timer, der nach unten zählt, die aus einer Variablen Anzahl. Ich bin in der Lage, erfolgreich zu machen, eine von Ihnen nach unten zählen, aber ich kann nicht herausfinden, wie man einen timer in jedem element der ListView.
Ich bin derzeit mit einem CountDownTimer (stellen Sie sicher, profitieren die D, wenn das kopieren von der website, Sie haben es falsch).
Code oder Quellen zu verweisen mich in die richtige Richtung sind sehr geschätzt.
Hier ist meine aktuelle EventAdapter-Klasse, Sie setzt den text, der angezeigt wird in jeder ListView-element TextView. Was ich tun müssen, ist, dass der TextView-Countdown-jede Sekunde. Da jedes element der ListView ist die Anzeige etwas anders, ich glaube, ich brauche eine Möglichkeit der Differenzierung der einzelnen Elemente.
Konnte ich nur ein update die ganze Liste jedes zweite, aber es gibt andere Elemente, die ich nicht haben enthalten, wie z.B. Bilder aus dem internet geladen, wäre es unpraktisch zu aktualisieren jede Sekunde.
private class EventAdapter extends ArrayAdapter<Event>
{
private ArrayList<Event> items;
public EventAdapter(Context context, int textViewResourceId, ArrayList<Event> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
Event e = items.get(position);
if (e != null) {
TextView tv = (TextView) v.findViewById(R.id.text);
if (tv != null)
tv.setText(e.getName());
}
return v;
}
}
Es ist nicht so sehr etwas falsch, ich weiß nur nicht, wie Sie beginnen, Sie umzusetzen. Aber ich werde nach einigen code in nur einer Sek.
Ich habe eigentlich das gleiche Problem und verwenden singleton-CountDownTimer, die myClickMethod () - Methode aus rxJava, wobei jede Ansicht ist abonniert, Veranstaltung und notofication Aktualisierung der Staat. Ich bin nur zu erwägen, dies als eine Art von Lösung.
Bitte haben Sie einen Blick auf diese Antwort stackoverflow.com/a/40236877/5644410
InformationsquelleAutor Kevin Cooper | 2011-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte haben Sie einen Blick hier auf meinem blog wo finden Sie ein Beispiel, wie Sie diese erreichen.
Eine Lösung besteht darin, den TextView, stellt jeder Zähler in einer HashMap zusammen mit der position in der Liste der Schlüssel.
In der getView()
Dann können Sie aktualisieren Sie die Schalter mithilfe eines Handler und wo du postest einen Thread.
genial, es funktioniert perfekt! vielen Dank
InformationsquelleAutor rochdev
Dies ist ein Beispiel für die Art, wie ich es und es funktioniert perfekt:
- Und dies ist der adapter
Ja, Es ist auch hilfreich für mich, Danke
Vielen Dank , Ihre einfache und tolle Lösung , gespeichert meiner Zeit.
InformationsquelleAutor Pablo Moncunill
nach der überprüfung einige Möglichkeiten, das zu tun dies ist eine kreative Lösung, die ich schrieb .seine einfach und funktioniert perfekt .
die Idee, es zu überprüfen, ob die
Runnable
, dass Aktualisierungen der Daten ist von der Aktualisierung die gleicheTextView
und wenn dieTextView
ist in Bezug auf die verschiedenen anzeigen derRunnable
zu stoppen und auf diese Weise es gibt keine extra -Thread
's im hintergrund, so wird es keine blinkenden text oder Speicherverlust.1 . in Ihrem
getView()
fügen Sie die einzelnen TextView tag mit seiner position .2 . erstellen Sie die Klasse implementiert Runnable, so können wir Parameter übergeben .
also, was hier geschehen ist, es sei denn, die
TextView
ist nicht gleich dem ursprünglichen tag derRunnable
zu stoppen .3 . gehen Sie zurück zu Ihrem
getView()
ist es , die Arbeit ist perfekt !
das ist die Idee , ich"m sicher, dass Sie herausfinden, indem Sie jetzt (-:
das ist die Antwort
InformationsquelleAutor Jesus Dimrix
Hier ist eine andere Lösung für die Verwendung von ListView mit mehreren Countdown-Timers. Zunächst erstellen wir eine Klasse MyCustomTimer hält, dass der CountDownTimer:
Dann, initilize die erstellte Klasse in Ihrem adapter:
natürlich wird es nicht funktionieren . seine erstellen neue Countdown-Timers für jede Ansicht, ohne zu prüfen, ob seine neue Ansicht oder vorhandenen . nach einer schriftrolle, die Sie haben mehr als einen CountDownTimer auf die jeweilige Ansicht .
InformationsquelleAutor Bakyt