我在Fragment中有以下代码,用于显示listview中文件夹中的所有文件。我还添加了从listview中删除文件的功能。一旦删除了最后一个文件,我想显示一个不同的xml布局,如果选项卡被更改则成功运行,但如果列表视图中的最后一个项目被删除则不是实时。
mFrame3 = (RelativeLayout) inflater.inflate( R.layout.ptrip, container, false ); //display if file exist
noFilesDisplayed = (RelativeLayout) inflater.inflate(R.layout.nofile, container, false); //display if file doesn't exist
if (FilesInFolder != null) {
mFrame3.setVisibility(View.VISIBLE); //display the listview
noFilesDisplayed.setVisibility(View.GONE); //hide it
}
else {
mFrame3.setVisibility(View.GONE); //hide it
noFilesDisplayed.setVisibility(View.VISIBLE); //display if no file exist in the folder
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
int menuItemIndex = item.getItemId();
String[] menuItems = getResources().getStringArray(R.array.menuSelect);
String menuItemName = menuItems[menuItemIndex];
String txt = ((TextView) info.targetView.findViewById(R.id.txtTitle)).getText().toString();
if (menuItemIndex == 0) {
if (folder.exists()) {
//File flEachFile = new File(folder.toString() + "/" + currentFileName + ".tp");
flEachFile = new File(folder.toString() + "/" + txt + ".tp");
flEachFile2 = new File(folder.toString() + "/." + txt + ".tp");
if (flEachFile.exists()) {
flEachFile.delete();
}
if (flEachFile2.exists()) {
flEachFile2.delete();
}
adapter.remove(adapter.getItem(info.position));
adapter.notifyDataSetChanged();
dataList.setEmptyView(noFilesDisplayed);
//getActivity().getActionBar().setSelectedNavigationItem(1);
}
}
return true;
}
没有发生的事情是从列表视图中删除最后一项后,以下命令不会更改视图:dataList.setEmptyView (noFilesDisplayed);
一旦显示最后一个文件,我如何实现视图更改?也许刷新Tab视图本身?
答案 0 :(得分:1)
实际上,setEmptyView()
只能在创建ListView
时调用一次。
将noFilesDisplayed
展示次数设置为GONE
,不要手动修改,ListView
会为您执行此操作。也许这会解决问题。
此外,someone says here手动将膨胀的视图添加到ListView的父级(而不是在调用inflate()
时提供父级)解决了类似的问题。