【问题标题】:notifyDatasetchanged not working for ArrayAdapternotifyDatasetchanged 不适用于 ArrayAdapter
【发布时间】:2023-03-14 07:28:02
【问题描述】:

我正在尝试实现 2 AutoCompleteTextView。第一个持有该值,单击其中一个将填充第二个 AutoCompleteTextView 中的数据,所有工作和数据都会正确加载但是当我尝试在第二个适配器上调用 notifyDataSetChanged 时,该适配器填充了第二个未更改的字段.

我也在 Handler 中编写了那段代码,但这似乎也不起作用。

branchAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,branchNames);
et7.setAdapter(branchAdapter);//et7 is the AutoCompleteTextView //branchname is the ArrayList

在某些方法中,我清理 ArrayList 并将新数据添加到其中,然后调用 notifyDataSetChanged,如下所示

Handler handler = new Handler(Looper.getMainLooper());
  handler.post(new Runnable() {
     @Override
     public void run() {
         branchAdapter.notifyDataSetChanged();
     }
  });

没有更新列表。这里更新数据的正确方法应该是什么?

【问题讨论】:

  • 您是通过适配器还是通过您自己的外部列表(例如branchNames)修改ArrayList?你能展示那部分代码吗?

标签: arraylist android-arrayadapter autocompletetextview notifydatasetchanged


【解决方案1】:

尝试重置列表视图。

             ListView lv = (ListView)findViewById(R.id.lv);
             ArrayAdapter adapter = new ArrayAdapter(/*with all parameters*/);
             lv.setAdapter(adapter);

【讨论】:

    【解决方案2】:

    @Saty,我想我参加聚会有点晚了。我正在回答,请记住,它可能会在将来对某人有所帮助。 使用 branchAdapter.clear() 方法清理适配器。然后使用 branchAdapter.addAll(String... items) 方法将新项目添加到适配器。现在,调用 branchAdapter.notifyDataSetChanged() 方法。这将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多