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