Atualizando um gráfico de um ArrayList ao longo do tempo?
Eu tenho um ArrayList de valores e gostaria de percorrer o ArrayList. Para cada novo valor, eu gostaria de atualizar o gráfico com esse valor e aguardar um período definido antes de fazer a mesma coisa com o próximo valor.
No momento, meu log diz que todos os valores estão sendo repetidos. No entanto, no meu dispositivo de teste, o gráfico não é atualizado até o final; nesse ponto, todos os valores são carregados de uma só vez, para que não haja o efeito "apresentação de slides" desejado.
Quando eu quero começar a reproduzir os valores em meu ArrayList, esse método é chamado:
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.");
}
}
O que posso fazer para que os valores sejam exibidos no meu gráfico, um após o outro, com uma certa quantidade de tempo entre cada valor?
Editar: Aqui estava a solução que acabei implementando com a ajuda de Shadab Ansari:
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);
}
Caso não estivesse claro, ret era uma variável global que continha as matrizes que eu ia inserir. yVals1 era um ArrayList de entradas para preencher o gráfico de radar.
O resultado final é que, neste código de exemplo, o gráfico é atualizado com o próximo valor em meu ArrayList a cada 100 milissegundos. Durante esse período, ainda posso ampliar / reduzir o gráfico e girá-lo sem problemas.