我有一个记录声音的应用程序。录制完声音后,系统会要求用户 (AlertDialog) 重命名录制的文件。文件重命名后,文件名添加到.txt文档中(存储在Android/data/package_name中)。在第二个活动中,有一个列表视图,项目从这个 .txt 文件添加到列表视图。现在,在您可能知道我的应用程序是如何工作的之后,问题就来了。
在第二个活动中,我添加了一个 OnLongClickListener。如果用户长按 ListView 中的某个项目,它会打开一个带有“重命名”选项的菜单。用户输入新名称并按 OK 后,文件名以及该 .txt 文件中的文件名都会更改。
问题是 ListView 没有更新,所以我需要重新启动活动才能更新它。我尝试了很多东西,但没有任何效果。
我尝试了几种不同的 updateListView 方法:
public void updateListView(){
ViewGroup vg = (ViewGroup)findViewById(R.id.mainListView);
vg.invalidate();
}
和这个:
public void updateListView(){
listAdapter.clear();
listAdapter.addAll(recordedFilesArray);
listAdapter.notifyDataSetChanged();
}
我还尝试在单击按钮时调用 listAdapter.notifyDataSetChanged() ,基本上我能想到的所有地方都没有任何效果。查看文件已重命名的唯一方法是重新启动活动。
无法在单击按钮时重新启动活动,因为活动在选项卡布局内,如果重新启动,它会自动打开活动 #1,而这是活动 #2。
实现列表适配器:
listAdapter = new ArrayAdapter<String>(this, com.whizzappseasyvoicenotepad.R.layout.simplerow, recordedFilesArray);
listView.setAdapter(listAdapter);
recordedFilesArray 是从 .txt 文件中添加名称的 ArrayList