我看到關於notifyDataSetChanged()有許多問題。我已經瀏覽了其中的許多解決方案,但沒有任何解決方案適用於我。Android適配器notifyDataSetChanged()不清除以前的列表
我使用ArrayList來設置我的列表,並且在我的ArrayList更新後,我運行了notifyDataSetChanged()。新的列表被添加到前一個列表中。
可以說第一個列表是a,b,新列表是a,b,c。我最終得到的是a,b,a,b,c。 並且每次更新時都會再次出現新列表。我試過其他如invalidate(),適配器clear(),refreshDrawableState()等,並沒有任何工作。
預先感謝您。
這裏是簡化的代碼,即使在更改.xml文件中的代碼後,更改MainActivity將Activity擴展爲ListActivity的註釋也會使程序崩潰。
public class MainActivity extends Activity
{
ArrayList<String> names = new ArrayList<String>();
ArrayAdapter arrayAdapter = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv1 = (ListView) findViewById(R.id.listview);
arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names);
lv1.setAdapter(arrayAdapter);
}
//code here to edit the ArrayList names.
public void onResume()
{
super.onResume(); // Always call the superclass method first
//the activity need to be updated everytime it resumes.
arrayAdapter.notifyDataSetChanged();
}
}
檢查你的名字。 –
可能問題出在你正在更新ArrayList的代碼中。你能分享嗎? ArrayList在某些方面很棘手,如何替換整個列表內容並不明顯。在放置新元素之前,您是否調用clear()? – sandrstar
我不清楚你是否希望新列表包含a,b,a,b,c或只是a,b,c。你是否正確地更新了'ArrayList'的內容? – Spinner