У меня есть ArrayList значений, и я хотел бы перебирать ArrayList. Для каждого нового значения я хотел бы обновить диаграмму с этим значением, а затем дождаться установленного количества времени, прежде чем делать то же самое со следующим значением.Обновление диаграммы из ArrayList с течением времени?
В настоящий момент в моем журнале указано, что все значения повторяются. Однако на моем тестовом устройстве диаграмма не обновляется до самого конца; в этот момент все значения загружаются сразу, поэтому нет никакого эффекта «слайд-шоу».
Когда я хочу, чтобы начать воспроизведение значения в моей ArrayList, этот метод называется:
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.");
}
}
Что я могу сделать так, что значения отображаются на моей карте, один за другим, с определенным количество времени между каждым значением?
Edit: Вот было решение, которое я в конечном итоге реализации с помощью от Shadab Ансари:
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);
}
В случае, если это не было ясно, RET была глобальная переменная, которая содержала массивы, которые я собирался вставить. yVals1 был ArrayList записей для заполнения радиолокационной карты.
Конечным результатом является то, что в этом примере код обновляется со следующим значением в моем ArrayList каждые 100 миллисекунд. За это время я все еще могу увеличить/уменьшить диаграмму и без проблем повернуть ее.
Вы можете разместить код AddEntry()? –