2013-08-23 55 views
0

我用notifyDataSetChanged适配器,但我的列表没有更新。这是我的代码的一部分。适配器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与用户的用户名。

+2

请出示更多的代码,您更改您的用户名? – Eugene

+0

感谢您的回复,我做了一个编辑 –

回答

1

对于ArrayAdapternotifyDataSetChanged()仅适用于在适配器上使用添加,插入,删除和清除功能。

当构造一个ArrayAdapter时,它将保存传入的List的引用。如果您要传入一个属于Activity的List并稍后更改该Activity成员,ArrayAdapter仍然保持对原始列表的引用。适配器不知道您更改了活动中的列表。

试试这个:

userNames.add(user.getUsername()); 
adapter.clear(); 
adapter.addAll(userNames); 
adapter.notifyDataSetChanged(); 
+1

这将清除之前添加的所有用户名。 – traninho

+0

感谢您的回复,但它不起作用(( –

+0

我已更新我的帖子 –

1

尝试直接添加用户名适配器,而不是添加到用户名。也许当你创建ArrayAdapter的一个新实例,它会创建内部适配器一个新的私人服务,您的用户名添加到用户名的旧实例:

adapter.add(user.getUsername()); 
adapter.notifyDataSetChanged(); 
相关问题