当前位置: 首页 > 知识库问答 >
问题:

如果列表视图中的最后一项被删除,则显示不同的布局

祝叶五
2023-03-14

我的片段中有以下代码,用于在列表视图中显示文件夹中的所有文件。我还添加了从列表视图中删除文件的功能。一旦最后一个文件被删除,我想显示一个不同的xml布局,如果选项卡被更改,它会成功工作,但如果listview中的最后一个项目被删除,它不会实时工作。

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;
    }

没有发生的是,一旦从listview中删除最后一项,以下命令不会更改视图:dataList.set空视图(noFilesDisplay);一旦显示最后一个文件,我如何实现视图更改?也许刷新Tab视图本身?

共有1个答案

郭子航
2023-03-14

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

noFilesDisplay可见性设置为GONE,并且不要手动修改它,ListView将为您完成。也许这将解决问题。

此外,这里有人说,手动将膨胀视图添加到ListView的父视图(而不是在调用膨胀()时提供父视图)解决了类似的问题。

 类似资料:
  • 我试图使用文本视图来显示从列表视图中选择的联系人。列表视图包含用户从加载到列表视图中的Android电话簿中选择的联系人。文本视图将只显示列表视图中的最后一项,即使用户选择了另一个不是列表视图中最后一个联系人的联系人。 即使在我的日志打印中,我可以看到我选择了哪个联系人,但当我试图将其打印到另一个窗口中的文本视图时,它仍然默认为最后一个联系人。 添加调制解调器。JAVA 主要活动。JAVA

  • 我在我的列表视图中添加了一个可绘制的分隔线,但它出现在除最后一项之外的所有项目中。 我在列表中只有5个项目,所以在最后一个项目之后都是空白,我想在最后一项之后也有一个分隔符 我试过这个: 在我的列表视图中。但它不起作用 非常感谢。

  • 我有一个奇怪的场景,每次我从的第一项中的微调器中选择一个值,最后一个项的微调器值与第一项相同。只有当ListView项目总数为5个及以上时,才会发生这种情况。我注释掉了代码,只保留了声明,但它仍在发生。这是Android系统的漏洞吗? 澄清: > 我的ListView的为空 我的微调器的被注释掉。 Android SDK工具版本为22.6.2 Android SDK平台工具是19.0.1 以下是适

  • 我正在使用回收器视图显示具有多个视图的项目。每当我启动应用程序时,就会显示一些空白。正好等于我的列表项。我提供了截图,请浏览一下。 我想我的代码没有问题。下面是我的代码RecycerView 适配器代码 请帮帮我。谢谢。

  • 我以以下方式使用来显示在SQLite DB中更新的位置项列表。 这些项目被很好地删除,并在我滑动它们时更新。但是当我滑动删除最后一个项目时,它又出现在视图中。当我关闭应用程序并重新打开应用程序时,该项目已被删除。 但当项目被滑动以删除时,在该应用程序运行的实例中,即使滑动多次,该项目也不会从视图中删除。 refreshPlacesData() 我错过了什么吗?谢谢。 编辑:我尝试更新适配器而不是m

  • 这是我的查询,我尝试了这个查询,它是有效的。 我想显示conference_venue的数据。但是我不想显示id_venue与submission_data表相同的数据(与提到id_submission的id_venue相同)。 我试图查询laravel版本,但它是一个空白的白色屏幕,没有错误。 当我在sql查询控制台中尝试此查询时,此查询可以工作,但在使用Laravel查询生成器尝试时失败。