0

나는 volley가 요청한 데이터를 표시하는 recyclerview를 가지고있다. 처리기()를 사용하고 있습니다. postDelayed를 사용하여 4 초 동안 진행률 막대를 표시하지만 API에서 데이터를 가져 와서 recyclerview에 표시하기 위해 4 초 이상 걸리기 때문에 recyclerview와 일관성이 없습니다. 그거야. 그러나 recyclerview가 아직 표시되지 않는 한 진행률 표시 줄을 실행하고 싶습니다. 어떻게하면 recyclerview가로드되는 동안 진행률 표시 줄을 표시하고 완료되면 숨길 수 있습니까?

내 코드

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      stopProgressbar(); 
     } 
    },4000); 

    new Handler().post(new Runnable() { 
     @Override 
     public void run() { 
      loadData(); 
     } 
    }); 

답변

1

stopProgressbar()onResponse()onErrorResponse() 방법으로 불러주십시오.

public void loadData() 
{ 
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, 
      url, null, 
      new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        Log.d(TAG, response.toString()); 

        // Parse JSON data and add to list 
        ........... 
        ........................... 

        // Hide progressbar 
        stopProgressbar(); 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d(TAG, "Error: " + error.getMessage()); 

        // Hide progressbar 
        stopProgressbar();      
       } 
      }); 

      .................. 
      .......................... 
} 
+0

정말 고마워요. –

+0

행복하다는 것을 알기 때문에 다행 이네요. – FAT

1

진행 막대를 처리하기 위해 별도의 핸들러 필요가 없습니다.

volly에서 응답을 받으면 중지 할 수 있습니다. 거기에서 stopProgressbar(); 방법으로 전화해야합니다.

주요 스레드 문제가있는 경우 runOnUIThread() 방법으로 쓰십시오.

+0

제가 'runOnUIThread'또는 사용할 경우 '. 처리기() 포스트'ProgressBar 구성 그다지 표시 : 여기서

는 일례이다. 그것은 'Handler()를 사용할 때만 보여줍니다. postDelayed' –