如果删除ListView中的最后一项,则显示不同的布局

时间:2013-08-09 03:20:48

标签: java android android-listview

我在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视图本身?

1 个答案:

答案 0 :(得分:1)

实际上,setEmptyView()只能在创建ListView时调用一次。

noFilesDisplayed展示次数设置为GONE,不要手动修改,ListView会为您执行此操作。也许这会解决问题。

此外,someone says here手动将膨胀的视图添加到ListView的父级(而不是在调用inflate()时提供父级)解决了类似的问题。