Actualizar TextView utilizando Timer y ArrayList
Estoy escribiendo un pequeño programa para actualizar TextView en cada 5 segundos. Pero no puedo actualizar el texto de mi texto en cada 5 segundos, especialmente cuando se trata de artículo de arraylist pasado, como: C en código inferior
Estoy siguiendo este tutorial
- Detener el temporizador y continuar
- Android / phonegap - Tiempo de respuesta del clic lento
- incapaz de decodificar la secuencia java.io.FileNotFoundException / storage / emulated / 0 open failed: ENOENT (No existe tal archivo o directorio
- CountDownTimer.cancel () no funciona en Android
- Temporizador en segundo plano
public class MainActivity extends Activity { Timer timer; MyTimerTask myTimerTask; List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textCounter = (TextView)findViewById(R.id.counter); timer = new Timer(); myTimerTask = new MyTimerTask(); timer.schedule(myTimerTask, 1000, 5000); .... list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); } class MyTimerTask extends TimerTask { @Override public void run() { runOnUiThread(new Runnable(){ @Override public void run() { for(int i=0; i<list.size(); i++) { textCounter.setText(list.get(i).toString()); } }}); }}
- Error de Android: "No se pudo crear la instancia de epoll" o "No se pudo crear el canal de despertador"
- Timer y TimerTask en Android
- ¿Cómo iniciar una actividad después de cierto período de tiempo?
- Android: ejecuta un hilo repetidamente dentro de un temporizador
- Android Java: ¿Cómo restar dos veces?
- Temporizador con devolución de llamada
- Java - Timer.cancel () v / s TimerTask.cancel ()
- Crear un temporizador de incremento en segundos en formato 00:00?
No iterar lista cada vez que se ejecuta el método llamado. En su lugar, obtenga un elemento de la lista y establezca en TextView.
private int count =0; private class MyTimerTask extends TimerTask { @Override public void run() { runOnUiThread(new Runnable(){ @Override public void run() { textCounter.setText(list.get(count%list.size).toString()); count++; }); } } }
En lugar de utilizar TimerTask
debe utilizar Handler
para actualizar TextView
.
Handler mHandler = new Handler(); final Runnable runnable = new Runnable() { int count = 0; @Override public void run() { count++; textCounter.setText(list.get(count).toString()); mHandler.postDelayed(this, 5000); // five second in ms } }; mHandler.postDelayed(runnable, 1000);
Espero que esto te ayude.
Aquí tengo un fragmento de código que sólo se actualiza Textview después de cada 5 segundos.
Paso 1: En primer lugar, sólo está haciendo un método saperate en el que Textview se actualiza como sigue.
private void updateTextView(){ /** * Write Your Textview Update Code */ }
Paso 2 Declare el objeto de la clase Runnable que es el método Just Call updateTextview después de un tiempo específico.
Runnable run = new Runnable() { @Override public void run() { updateTextView(); } };
Paso 3 puede iniciar este ejecutables utilizando el siguiente código.
YOUR_TEXTVIEW.postDelayed(run,5000);
Espero que estés claro con mi Idea.
La mejor de las suertes
Cambie su clase MyTimerTask como se indica a continuación.
private int position = 0; class MyTimerTask extends TimerTask { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { if (position >= list.size()) { position = 0; } textCounter.setText(list.get(position).toString()); position++; } }); } }
- Cómo agregar el contador de notificaciones Android
- Error al crear la aplicación Cordova mediante el complemento de CrossView WebView