0

我有一個recyclerview顯示排球請求的數據。我正在使用handler()。postDelayed來顯示4秒的進度條,但它與我的recyclerview不一致,因爲有時從api獲取數據並將其顯示在回收站視圖中需要超過4秒的時間,並且有時需要更少那個。 但是我想要進度條運行,只要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' 或 '處理程序()交' 的進度犯規節目。它只顯示當我使用'Handler()。postDelayed' –

相關問題