0

我用于notifyDataSetChanged适配器,但我的列表没有更新。这是我的代码的一部分。

adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,userNames);
list = (ListView) findViewById(R.id.listViewUsers);
list.setAdapter(adapter);

所以每次我向 中添加项目时userNames,我都会调用adapter.notifyDataSetChanged();方法,但没有任何更新。我尝试了很多清理,清理userNames的方法,但它不起作用。谁能帮我?谢谢

编辑:

我在添加新用户的地方调用这两个函数。

  userNames.add(user.getUsername());
  adapter.notifyDataSetChanged();

我也有User课,但我填写ListView了用户的用户名。

4

2 回答 2

1

对于ArrayAdapter,notifyDataSetChanged()仅当您使用适配器上的添加、插入、删除和清除功能时才有效。

构造 ArrayAdapter 时,它保存对传入的 List 的引用。如果您要传入一个作为 Activity 成员的 List,然后更改该 Activity 成员,则 ArrayAdapter 仍然持有对原名单。Adapter 不知道你更改了 Activity 中的 List。

尝试这个:

userNames.add(user.getUsername());
adapter.clear();
adapter.addAll(userNames);
adapter.notifyDataSetChanged();
于 2013-08-23T14:24:08.570 回答
1

尝试将用户名直接添加到适配器而不是添加到用户名。也许当您创建 ArrayAdapter 的新实例时,它会在适配器内创建一个新的私有列表,并将用户名添加到 userNames 的旧实例:

adapter.add(user.getUsername());
adapter.notifyDataSetChanged();
于 2013-08-23T14:34:04.230 回答