Ich habe eine ArrayList von Werten, und ich möchte die ArrayList durchlaufen. Für jeden neuen Wert möchte ich das Diagramm mit diesem Wert aktualisieren und dann eine bestimmte Zeit warten, bevor ich dasselbe mit dem nächsten Wert mache.Aktualisieren eines Diagramms von einer ArrayList im Laufe der Zeit?
Im Moment sagt mein Protokoll, dass alle Werte iteriert werden. Auf meinem Testgerät wird das Diagramm jedoch erst am Ende aktualisiert. An diesem Punkt werden alle Werte auf einmal geladen, so dass kein gewünschter "Diashow" -Effekt vorhanden ist.
public void playback(){
if(ret != null) {
for (int x = 0; x < ret.size(); x++) {
addEntry(ret.get(x));
try {
Thread.sleep(100);
} catch (Exception e){
//Do nothing
}
}
} else {
Log.d(LOG_TAG, "ret was null.");
}
}
Was ich so tun kann, dass die Werte auf meinem Diagramm angezeigt werden, einer nach dem anderen, mit einem gewissen:
Wenn ich die Werte in meinem Arraylist wiedergeben, ist diese Methode gestartet werden soll aufgerufen Zeit zwischen jedem Wert?
Edit: Hier war die Lösung, die ich von Shadab Ansari mit Hilfe der Umsetzung endete:
public void playback(){
if(ret != null) {
addEntry(0);
} else {
Log.d(LOG_TAG, "ret was null.");
}
}
private void addEntry(int index) {
final int in = index;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
yVals1.get(0).setVal(ret.get(in).intValue());
RadarDataSet set1 = new RadarDataSet(yVals1, "Set 1");
// And other UI stuff
// Recursive call!
if(in < ret.size() - 1){
addEntry(in + 1);
}
}
}, 100);
}
Falls es nicht klar war, ret eine globale Variable war, dass die Arrays enthalten, dass ich würde einfügen. yVals1 war eine ArrayList von Einträgen, um die Radarkarte zu füllen.
Das Endergebnis ist, dass in diesem Beispielcode das Diagramm mit dem nächsten Wert in meiner ArrayList alle 100 Millisekunden aktualisiert wird. Während dieser Zeit kann ich immer noch das Diagramm vergrößern/verkleinern und es problemlos drehen.
Können Sie addEntry() Code schreiben? –