2017-04-19 7 views
0

이 내가 서버, 에서 데이터를 수신 할 때까지해서 ProgressDialog를 보여 내가 가진 경우 (items.size가> 0 경우)해서 ProgressDialog가 기각 될 서버에서 결과를 원하는 내 코드runonuiThread UI 루프

이다; 하지만이 코드를 실행하면 서버에서 데이터를 받지만 runonuiThread에서 progressdialog를 실행합니다. 나는 ThreadInfo에 로그 할 때

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

는, 그것은 1 하지만 여전히해서 ProgressDialog가 실행되고 사라지지 items.size에게 값을 전송합니다.

질문, items.size가 0이 아닌데 어떻게 progressdialog를 닫을 수 있습니까?

혹시 궁금한 점이 있으면 알려주세요.

+0

쓰기와 같은 코드를 변경해야합니다. 그것은 당신이 runonUIthread를 조건문에 써야한다는 것을 의미합니다. (items.size> 0) {} –

+0

@Rajesh runonuithread가 아니라는 것을 의미합니까? 하지만 runonuithread에 대해 알고 있는데, 내가 UI를 변경할 때, 그럴 것입니다. 그래서 progressdialog를 넣습니다. –

+0

왜 간단한 비동기 작업을 사용하지 않습니까? – Shmuel

답변

0

당신은 runonUIthread 전에 경우 조건 아래이

if (items.size > 0) { 


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

} 
+0

도움 주셔서 감사합니다. –