如何在recyclelerview加载时显示进度条并在完成后隐藏它?

时间:2017-05-21 19:18:23

标签: android android-layout android-recyclerview android-progressbar

我有一个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();
        }
    });

2 个答案:

答案 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()方法下将其写下来。