gpt4 book ai didi

java - 我正在使用 NotifydataAdapter 但当数据库上的值更改时它不起作用;

转载 作者:行者123 更新时间:2023-12-02 05:57:04 25 4
gpt4 key购买 nike

我从服务器获取 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);

在后台模式:

  1. 当你在数组中循环时,永远记住:索引从 0 开始,因此它总是小于数组的大小,即 for (int i=0;i<jsonArray.length();i++)
  2. 您应该始终在 for 循环中创建 Model 类的新对象,然后将其添加到循环中。无需在循环中调用notifydatasetchanged。

在onPostExecute中:我们调用notifydatasetchanged只是因为我们已经添加了列表中的所有元素。

希望这能解释您的所有疑问。如果您在任何情况下都感到困惑,请告诉我

关于java - 我正在使用 NotifydataAdapter 但当数据库上的值更改时它不起作用;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com