更新ListView或Activity?

时间:2013-08-19 14:06:51

标签: java android eclipse android-intent android-listview

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

我尝试通过简单地创建新意图并重新打开活动来解决问题,但由于该活动位于tablayout内部,因此无效。我也尝试重新打开tabLayout活动但是它会自动转到选项卡1,而我正在尝试刷新选项卡2中的listView。

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

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

但这也不起作用。当我使用此方法时,它会完全清除listView,然后我必须重新启动活动以查看结果。

那么,任何人都知道如何在不重新启动活动的情况下查看listView更改?顺便说一句,如果它有帮助,我正在从文本文件中读取ListView(ArrayList)。

4 个答案:

答案 0 :(得分:0)

仅在不清除listAdapter

的情况下尝试使用notifyDataSetChanged()

答案 1 :(得分:0)

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

修改列表后,您需要重新初始化适配器。因此,getView()总是会在屏幕上显示更新的数据。

答案 2 :(得分:0)

要重命名项目,您可以在ArrayList中更改项目对象, 然后拨打adapter.notifyDataSetChanged()

答案 3 :(得分:0)

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

我的代码:

recordedFilesArray.set(toDelete, input.getText().toString()); //toDelete is arg2 variable (onLongItemClickListener)
listAdapter.notifyDataSetChanged();