根据您的评论,您不会更新适配器中的数组,而是更新一次传递给适配器的活动所持有的数组。这就是适配器没有正确更新的原因。您正在更改适配器类之外的数组,这可能与您的适配器正在使用的数组对象不同。在 onResume() 处,您的适配器使用新数组重新创建并显示新内容。
一种解决方案是使用以下自定义适配器类:
class MyAdapter extends BaseAdapter {
private Array[] myArray;
public MyAdapter(Array[] myArray) {
this.myArray = myArray;
}
public updateContent(Array[] myNewArray) {
this.myArray = myNewArray;
this.notifyDataSetChanged();
}
// your getItem, getView, and so on methods
}
然后从您的活动中,使用您的新数组简单地调用 myArray.updateContent() ,它将立即更新。
在另一个类(活动)中保存和操作从一个类(适配器)使用的对象从来都不是一件好事。尝试将用于操作数组的所有代码移动到适配器中,并使用方法来添加/删除项目。这将使查找此类错误变得容易得多!