2013-04-16 3 views
0
 progressDialog = ProgressDialog.show(MainActivity.this, "", "Loading..."); 
    Thread thread = new Thread() { 

     public void run() { 
      latch.countDown(); 
      try{ 
       sleep(3000);   
       } 
      catch (Exception e) {  
       Log.e("tag", e.getMessage());  
      } 

      progressDialog.dismiss(); 

     } 

    }; 
    thread.start(); listView.setAdapter(adapter); 

Я хочу показать загрузку через 3 секунды, а затем показать список, но список всегда отображается сразу. Как я хочу, чтобы поток был завершен, прежде чем показывать список?Отображение диалогового окна прогресса перед показом контента

+2

не заставляйте ваших пользователей безответственно ждать 3 секунды. Вы просто тратите свое время. если у вас есть работа по загрузке, сделайте это в фоновом режиме правильно с помощью AsyncTask и покажите им результат, как только он будет готов. У вас нет веской причины тратить 3 секунды своего времени ... – FoamyGuy

+0

Спасибо. Я знал это, но у меня есть причина для этой ситуации :-) – vNext

+0

В чем причина? – FoamyGuy

ответ

2

Вы не должны заставлять людей ждать без причины. Если у вас есть что загрузить, загрузите его. В противном случае нарисуйте все, что сможете, когда сможете.

В ответ на ваш конкретный вопрос вам понадобится Thread setAdapter после того, как он спал в течение 3 секунд (прямо сейчас, когда вызов выходит за пределы потока ... Я думаю, вы думаете, что этот вызов блокируется, но это целый point of the Thread, он выполняет свою собственную работу, пока выполняется остальная часть вашего кода).

Однако тема не может сделать ничего, чтобы дисплейная нить (кроме сгенерирует исключение), поэтому вам придется обернуть эту listView.setAdapter(adapter) вызова в Runnable и вызвать его через Handler от вашего Thread ....

но не надо!

+0

Да, вы правы. Мы не должны заставлять людей ждать ничего. Но у меня есть причина сделать это :-) – vNext

+0

Он работает с Handler. Большое спасибо д-ру Дределю. Вы экономите мой день :-) – vNext

+0

добро пожаловать! :) –

Смежные вопросы