2017-04-19 23 views
0

这是我的代码runonuiThread UI环

我想我展示progressdialog直到收到来自服务器, 数据,当我从服务器结果(如果items.size> 0),progressdialog将被辞退; 但我运行这段代码,我收到来自服务器的数据,但在runonuiThread中,仍在运行progressdialog。

List<ServerData> items = new ArrayList(); 
progressdialog.show();  

    Thread thread = new Thread(new Runnable() { 
       @Override 
       public void run() { 

        HttpRequest... 
        Gson gson = new Gson(); 
        Type type = new TypeToken<List<ServerData>>(){}.getType(); 
        items = gson.fromJson(String,type); 

        Log.d("ThreadInfo","" + items.size); 

        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          if(items.size > 0){ 
           progressdialog.dismiss(); 
          } 
         } 
        }); 
       } 
      }); 

当我登录一个ThreadInfo,它发出items.size值为1 但仍progressdialog正在运行并不会消失。

问题, 当items.size不是0时,我该如何解除progressdialog?

如果您有任何想法,请帮助我。

+0

写下runonUIthread之前你如果条件代码。这意味着你必须在if语句中写入runonUIthread if(items.size> 0){} –

+0

@Rajesh你的意思不是runonuithread?但是我知道runonuithread,当我改变UI时,它会在那上面,所以我把progressdialog放在那 –

+0

为什么你不使用简单的异步任务? – Shmuel

回答

0

你必须改变这样的

if (items.size > 0) { 


    runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
           progressdialog.dismiss(); 
         } 
        }); 

} 
+0

谢谢你的帮助 –