0

我在选项卡布局内的 Activity 内有一个 listView。如果我长按该项目,我可以选择重命名该项目。重命名项目后,在重新启动活动之前无法看到更改。

我尝试通过简单地创建一个新的意图并重新打开活动来解决问题,但由于该活动在 tablayout 内,它不起作用。我还尝试重新打开 tabLayout 活动,但它会自动转到选项卡 1,而我正在尝试刷新选项卡 2 内的 listView。

然后我尝试通过创建 updateListView() 方法来解决它:

public void updateListView(){
    listAdapter.clear();
    listAdapter.addAll(recordedFilesArray);
    listAdapter.notifyDataSetChanged();
}

但这也行不通。当我使用此方法时,它会完全清除 listView,然后我必须再次重新启动活动才能看到结果。

那么,任何人都知道我可以做些什么来查看 listView 更改而不重新启动活动?顺便说一句,如果有帮助,我正在从文本文件中读取 ListView (ArrayList)。

4

4 回答 4

0

要重命名项目,您可以更改 ArrayList 中的项目对象,然后调用adapter.notifyDataSetChanged().

于 2013-08-19T14:57:40.650 回答
0

我发现了问题。在活动重新启动之前,ArrayList 没有更改。我必须调用 arrayList.set() 来更改 ArrayList 中的元素。现在它可以正常工作了。

我的代码:

recordedFilesArray.set(toDelete, input.getText().toString()); //toDelete is arg2 variable (onLongItemClickListener)
listAdapter.notifyDataSetChanged();
于 2013-08-22T18:47:27.113 回答
0

尝试notifyDataSetChanged()仅使用而不清除您的 listAdapter

于 2013-08-19T14:12:09.377 回答
0

您可以创建一个单独的适配器类并实现其 getView() 函数来管理它。您的活动会将数组列表传递给适配器。适配器的 getView() 将负责显示列表中的内容。

当列表被修改时,您需要重新初始化适配器。这样 getView() 总是有更新的数据显示在屏幕上。

于 2013-08-19T14:48:05.683 回答