我无法让 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】:
你会不会错过任何一个
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
或
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在您的清单文件中?使用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 显示文件夹中的文件名的主要内容,如果未能解决你的问题,请参考以下文章
从 MySQL 获取数据并使用 JSON 在 ListView 中显示
C# winform编程 开发环境VS2010 listview控件问题