我使用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
。
答案 0 :(得分:1)
对于ArrayAdapter
,notifyDataSetChanged()
仅在您使用适配器上的添加,插入,移除和清除功能时才有效。
构造ArrayAdapter时,它保存传入的List的引用。如果要传入属于Activity成员的List,并稍后更改该Activity成员,则ArrayAdapter仍然保持引用原始列表。适配器不知道您更改了活动中的列表。
试试这个:
userNames.add(user.getUsername());
adapter.clear();
adapter.addAll(userNames);
adapter.notifyDataSetChanged();
答案 1 :(得分:1)
尝试直接将用户名添加到适配器,而不是添加到userNames。也许当你创建一个新的ArrayAdapter实例时,它会在适配器中创建一个新的私有List,你可以在旧的userNames实例中添加用户名:
adapter.add(user.getUsername());
adapter.notifyDataSetChanged();