我从服务器获取 json 数据。一切正常,但 notifyDataSetChanged
不起作用。
BackGroundTask backGroundtask = new BackGroundtask();
backGroundTask.execute(arrayList);
private class BackGroundWorkeroneSignup extends AsyncTask<List<CheckingDTO>,CheckingDTO, CheckingDTO> {
@Override
public void onResponse(JSONObject response) {
CheckingDTO check = new CheckingDTO(email_c+"=="+pass_c,email_c,pass_c,email_c,pass_c);
arrayList.add(checkingDTO);
adapterActivity = new HistoryAdapter(arrayList);
recyclerView.setAdapter(adapterActivity);
@Override
protected void onPostExecute(CheckingDTO data) {
super.onPostExecute(data);
arrayList.clear();
List<CheckingDTO> list = new ArrayList<>();
list.add(data);
adapterActivity = new HistoryAdapter(list);
adapterActivity.notifyDataSetChanged();
}
最佳答案
我正在发布在电子邮件中发送给您的相关代码。
oncreate方法
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext()));
adapterActivity = new HistoryAdapter(arrayList);
recyclerView.setAdapter(adapterActivity);
backGroundWorkeroneSignup = new BackGroundWorkeroneSignup();
backGroundWorkeroneSignup.execute(arrayList);
后台方法:
try {
JSONArray jsonArray = response.getJSONArray("get_request");// this is your array containing data
for (int i=0;i<jsonArray.length();i++) {
JSONObject jobj = jsonArray.getJSONObject(i);
String id = jobj.getString("id");
String email_c =jobj.getString("pick_lat");
String pass_c = jobj.getString("pick_lon");
checkingDTO = new CheckingDTO(email_c+"=="+pass_c,email_c,pass_c,email_c,pass_c);
CheckingDTO check = new CheckingDTO(email_c+"=="+pass_c,email_c,pass_c,email_c,pass_c);
arrayList.add(check);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
执行后
adapterActivity.notifyDataSetChanged();
在第一部分中,请注意recyclerView.setAdapter(adapterActivity);
在后台模式:
- 当你在数组中循环时,永远记住:索引从 0 开始,因此它总是小于数组的大小,即
for (int i=0;i<jsonArray.length();i++)
- 您应该始终在 for 循环中创建 Model 类的新对象,然后将其添加到循环中。无需在循环中调用notifydatasetchanged。
在onPostExecute中:我们调用notifydatasetchanged只是因为我们已经添加了列表中的所有元素。
希望这能解释您的所有疑问。如果您在任何情况下都感到困惑,请告诉我
关于java - 我正在使用 NotifydataAdapter 但当数据库上的值更改时它不起作用;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002934/