Android适配器notifyDataSetChanged()不会清除以前的列表

时间:2012-08-23 07:26:31

标签: android arraylist android-listview android-adapter

我看到有很多关于notifyDataSetChanged()的问题。我看了很多,但没有一个解决方案适合我。

我正在使用ArrayList来设置我的列表,在更新了ArrayList之后,我运行了notifyDataSetChanged()。新列表将添加到上一个列表中。

让我们说第一个列表是a,b和新列表是a,b,c。我到底得到的是a,b,a,b,c。 每次使用新列表再次更新时都会发生这种情况。

我已经尝试过其他诸如invalidate(),adapter 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();

}
}

1 个答案:

答案 0 :(得分:0)

好像你没有正确更新数组列表。更新后请尝试记录数组列表内容。