我必须在片段中加载回收视图。我将在一个例子中讲述我的问题。在我的回收视图中,有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--;
}
}));
}