2013-08-23 54 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(); 
相關問題