2

我看到关于 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();

}
}
4

1 回答 1

0

似乎您没有正确更新数组列表。请在更新后尝试记录数组列表内容。

于 2012-08-23T09:39:05.810 回答