我无法让 ListView 显示文件夹中的文件名

Posted

技术标签:

【中文标题】我无法让 ListView 显示文件夹中的文件名【英文标题】:I can't get a ListView to display the names of files in a folder 【发布时间】:2013-08-12 17:44:40 【问题描述】:

提前感谢您的帮助,

我正在尝试获取主要活动的列表视图以显示文件夹中文件的名称,尽管在此处和教程上进行了研究,但我只是无法工作,我不知道为什么。

这是 listview 行 textview 的 row.xml:

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          android:layout_
          android:layout_
          android:textAppearance="?android:attr/textAppearanceLarge"
          android:gravity="center_vertical"
          android:textColor="@color/black"
          android:paddingLeft="6dip"
          android:minHeight="?android:attr/listPreferredItemHeight"
        />

这里是 main_activity.java:

String extStorageDirectory = Environment.getExternalStorageDirectory().toString();

@Override
public void onCreate(Bundle savedInstanceState)
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ListView listView1 = (ListView) findViewById(R.id.actions);

    File directory = new File(extStorageDirectory
            + "/Android/data/com.tobin.backup");

    String[] filenames = directory.list();

    if (filenames == null)

    

    else

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, filenames);

        listView1.setAdapter(adapter);

    

我不知道是什么问题,谢谢你的帮助!

编辑:这是主要的活动布局:http://pastebin.com/cTkwRCNQ

【问题讨论】:

尝试Environment.getExternalStorageDirectory().getAbsolutePath(); 作为您的extStorageDirectory 变量。 @Squonk 刚刚做了,但还是不行:( 首先,您的清单中有外部存储权限吗?获取根目录的更好方法是 File directory = new File(Environment.getExternalStorageDirectory(), "/Android/data/com.tobin.backup");这将获得一个相对于目录的文件对象作为第一个参数。 @GabeSechan 还是一无所有 :( 你确定这行“String[] filenames = directory.list();”实际上返回一个长度 > 0 的数组? 【参考方案1】:

你会不会错过任何一个

&lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /&gt;

&lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&gt;

在您的清单文件中?使用WRITE_EXTERNAL_STORAGE 将为您提供读写权限。

【讨论】:

它们都包括在内。 您能检查一下您是否下拉到您的filenames == null 声明中吗?还是显示的项目没有正确显示? 我不知道你在问什么,我是这种东西的新手 :) 对此感到抱歉 =) 在 if 语句 if (filenames == null) 中添加 System.out.println("Filenames is null!"); 并查看“文件名是否为空!”当你运行你的应用程序时,它会在 LogCat 中打印出来。如果它被打印出来,那么我们只需要找出 directory.list(); 返回 null 的原因。 我做了一个 toast 而不是 logcat,它总是说有多个 null - pastebin.com/rFXqhDeU【参考方案2】:

问题似乎与您有关 activity_main.xml。尝试仅包含 listview 的 activity_main.xml 并将 listviews layout_width 和 layout_height 设置为 fill_parent,文件列表应该会显示出来。然后根据需要修改xml。

【讨论】:

我做了那个改变,仍然一样,由于某种原因 directory.list() 总是 > 0(即使文件数是 0),但是 directory.length 的整数正在报告文件夹中的文件数量准确:( 你为什么在你的 xml 中使用 android.support.v4.widget.DrawerLayout?ndroid.support.v4.widget.DrawerLayout? RelativeLayout xmlns:android="schemas.android.com/apk/res/android" 似乎工作

以上是关于我无法让 ListView 显示文件夹中的文件名的主要内容,如果未能解决你的问题,请参考以下文章

无法让 ListView 显示初始选定项目

无法加载 JSON 数据以在 ListView 中显示

从 MySQL 获取数据并使用 JSON 在 ListView 中显示

C# winform编程 开发环境VS2010 listview控件问题

水平 StackLayout 中的 ListView - Nativescript Vue

从MySQL获取数据并使用JSON在ListView中显示它