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

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()); } }}); }} 

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++; } }); } } 
  • Temporizador Android actualizando una vista de texto (UI)
  • Pausa CountDownTimer en Android cuando la actividad no está en frente
  • No recibe datos de ubicación del hilo
  • Manejador o temporizador android
  • ¿Cómo puedo implementar un Timer / TimerTask que ejecuta un AsyncTask? (Androide)
  • Android 2.2: ¿Cómo actualizar las vistas de texto automáticamente con un temporizador?
  • Visibilidad de ImageView Error con temporizador
  • ¿Cómo se utiliza un TimerTask para ejecutar un hilo?
  • Use CountDown Timer o rodar mi propio basado en Handler en Android
  • OnPause / onResume problemas de actividad
  • Lanzar null pointerException en Timer.Schedule ();
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.