【问题标题】:How do i show the progress bar while recyclerview is loading and hide it when done?如何在 recyclerview 加载时显示进度条并在完成后隐藏它?
【发布时间】:2017-05-21 19:18:23
【问题描述】:

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

这是我的代码

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 很高兴知道 :) 编码愉快
    【解决方案2】:

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

    一旦收到 volly 的响应,您就可以停下来。你应该从那里调用stopProgressbar(); 方法。

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

    【讨论】:

    • 如果我使用 'runOnUIThread' 或 'Handler().post' 进度条不显示。它仅在我使用 'Handler().postDelayed' 时显示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多