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

How do i show the progress bar while recyclerview is loading and hide it when done?

我有一个 recyclerview,它显示 volley 请求的数据。我正在使用 handler().postDelayed 来显示进度条 4 秒,但它与我的 recyclerview 不一致,因为有时需要超过 4 秒才能从 api 获取数据并将其显示在 recyclerview 和有时需要的时间更少。 但我希望进度条 运行 只要 recyclerview 还不可见。

这是我的代码

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

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

不需要单独的处理程序来处理进度条。

一旦你得到volly的回应,你就可以停止了。您应该从那里调用 stopProgressbar(); 方法。

当且仅当您遇到一些主线程问题时,将其写在 runOnUIThread() 方法下。

onResponse()onErrorResponse() 方法调用 stopProgressbar()

举个例子:

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();                    
                }
            });

            ..................
            ..........................
 }