2016-04-17 13 views
0

Hallo Ich möchte ein solches Verhalten zu implementieren: Jede Sekunde möchte ich einen String aus Liste und drucken Sie es. (eigentlich will ich meine Ansicht zu: setVisibility (View.Visible), aber es ist die gleiche SacheVerzögerung innerhalb für Schleife

final Handler handler = new Handler(); 
    for (String str : layoutsList) { 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Log.d("LevelOneFragment", "tick" + str); 
       i++; 
      } 
     }, 1000); 

    } 

Aber diese Lösung nicht funktionieren Wie soll ich das richtig tun

Antwort

0

Gerade jetzt Sie auf dem Handler bei 1000 ms eine Verzögerung für alle Arbeiten setzen. das bedeutet, dass jedes Element der Arbeit im wesentlichen zur gleichen Zeit auftreten, da die Schleife schnell ausgeführt wird.

Stattdessen, warum versuchen Sie nicht jedes Arbeitselement mit einer zunehmenden Verzögerung zu planen, wie (i + 1) * 1000?

for (int i = 0; i < layoutsList.size(); i++) { 
    final String str = layoutsList.get(i); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Log.d("LevelOneFragment", "tick" + str); 
     } 
    }, (i+1)*1000); 
0

Warum..? wollen Sie den UI-Thread blockieren? :-(

for (String str : layoutsList) { 
    Log.d("LevelOneFragment", "tick" + str); 
    i++; 
    Thread.sleep(1000); 
} 
+0

UI-Blockierung ist eigentlich eine schlechte Sache! Können Sie das gleiche machen, aber ohne UI-Blockierung? Ich habe meine Antwort bearbeitet. –

Verwandte Themen