我有一个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();
}
});
答案 0 :(得分:2)
从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();
}
});
..................
..........................
}
答案 1 :(得分:1)
无需单独的处理程序来处理进度条。
一旦你从volly得到回应,你就可以停止。你应该从那里调用stopProgressbar();
方法。
如果且仅当您遇到某个主要线程问题时,请在runOnUIThread()
方法下将其写下来。