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' –

相关问题