如何等待凌空响应加载回收器视图在片段中



我必须在片段中加载回收视图。我将在一个例子中讲述我的问题。在我的回收视图中,有20-30人的联系人。但他们的电话号码每 30 分钟就会发生变化。因此,当联系人按钮(?(在我的底部导航栏中单击时,我必须获取所有最新的电话号码,以便使用正确的电话号码加载recycleview。

我的解决方案是将adapter.notifyDataSetChanged((方法放到OnResponseListener。正如您可以想象的那样,在每个凌空响应中,回收视图都在更新(在 gui 上看起来真的很糟糕(。

我在互联网上找到的另一个解决方案是使用AsyncTask。但是凌空抽射使用自己的线程,所以看起来我们又回到了死胡同。

您可以尝试这样的事情,并计算有多少请求正在发送,当您不再有请求时,更新列表。

        int requestsSent = 30;
        requestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
        for(int i =0; i < requestsSent; i++)
        {
            mRequestQueue.add(new JsonObjectRequest(Request.Method.GET, "my url", null, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    requestsSent--;
                    if(requestsSent == 0)
                    {
                        notifyDataSetChanged();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    requestsSent--;
                }
            }));
        }

相关内容