Android 无法在listview中加载我的数组,我不知道为什么
我试图将数据从csv文件提取到数组中,然后在listview中显示该数组。我就快到了(经过大量的搜索/谷歌时间…对Java/android还不熟悉),但我不知道我做错了什么 我加载了一个文本文件,然后将内容提取到一个名为splitdata的字符串数组中。我希望在listview中显示splitdata数组 我的代码是:Android 无法在listview中加载我的数组,我不知道为什么,android,arrays,android-listview,Android,Arrays,Android Listview,我试图将数据从csv文件提取到数组中,然后在listview中显示该数组。我就快到了(经过大量的搜索/谷歌时间…对Java/android还不熟悉),但我不知道我做错了什么 我加载了一个文本文件,然后将内容提取到一个名为splitdata的字符串数组中。我希望在listview中显示splitdata数组 我的代码是: try { File myFile = new File("/sdcard/file.txt"); FileInputStream fIn = new Fi
try {
File myFile = new File("/sdcard/file.txt");
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(
new InputStreamReader(fIn));
String aDataRow = "";
String aBuffer = "";
while ((aDataRow = myReader.readLine()) != null) {
aBuffer += aDataRow + "\n";
}
// String loadeddata = aBuffer;
String[] splitdata = aBuffer.split(",");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.grid_item, splitdata);
adapter.clear();
adapter.addAll(splitdata);
lvlogbook.setAdapter(adapter);
myReader.close();
试试看{
File myFile=新文件(“/sdcard/File.txt”);
FileInputStream fIn=新的FileInputStream(myFile);
BufferedReader myReader=新BufferedReader(
新的InputStreamReader(fIn));
字符串aDataRow=“”;
字符串aBuffer=“”;
而((aDataRow=myReader.readLine())!=null){
aBuffer+=aDataRow+“\n”;
}
//字符串加载数据=aBuffer;
字符串[]splitdata=aBuffer.split(“,”);
ArrayAdapter=新的ArrayAdapter(此,R.layout.grid_项,拆分数据);
适配器。清除();
adapter.addAll(splitdata);
lvlogbook.setAdapter(适配器);
myReader.close();
当我加载这个活动时,我只显示了空白的ListVIEW。请帮助接收好(我已经在TestVIEW中测试了这个数组,并且我想要的数据被分离出来,我想问题是我如何用我的数据来填充适配器)。 谢谢你的帮助
Andy很可能您没有ArrayAdapter默认期望的具有特定id的文本视图 尝试默认布局:
new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, splitdata);
new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,splitdata);
或者尝试提供TextView的实际ID的另一个构造函数,例如
new ArrayAdapter<String>(this, R.layout.grid_item, R.id.YOURTEXTVIEWID, splitdata);
new ArrayAdapter(此,R.layout.grid_项,R.id.YOURTEXTVIEWID,splitdata);
这是我正在调用的grid\u item.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView android:id="@+id/item1"
android:text="row_id"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="300dip"
android:textColor="#ffffff"
android:textSize="20dp"
android:textStyle="bold"
/>
<TextView android:id="@+id/item2"
android:text="col_1"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="180dip"
android:textColor="#ffffff"
android:textSize="20dp"
android:textStyle="bold"
/>
<TextView android:id="@+id/item3"
android:text="col_2"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="180dip"
android:textColor="#ffffff"
android:textSize="20dp"
android:textStyle="bold"
/>
<TextView android:id="@+id/item4"
android:text="col_3"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:width="100dip"
android:textColor="#ffffff"
android:textSize="20dp"
android:textStyle="bold"
/>
</LinearLayout>
当我在中加载带有listview的活动时,我得到的只是toast弹出窗口,我必须捕获异常。我很困惑为什么我的listview不工作。我错过了什么?如果我在适配器上注释掉适配器clear和adapter addAll,那么活动在启动时就会崩溃(意外停止).欢迎使用StackOverflow。请参阅notifyDataSetChanged()..您还应该使用StringBuilder来创建缓冲区。使用字符串可能会导致大量垃圾收集,而且效率低下。谢谢,您可以在使用stringbuffer时扩展一点吗?字符串是不可变的。一旦创建,它就无法修改。任何更改都将创建一个新字符串。您可以在循环中多次执行此操作,然后生成e大量的字符串必须在之后进行垃圾收集。StringBuilder避免了这种情况。StringBuilder sb=new StringBuilder();sb.append(第一行);sb.append(第二行);等等然后使用sb.toString()当你完成构建后。谢谢,我会相应地修改我的代码。现在只需要让列表视图工作…不客气。对不起,我很无聊,我需要列表视图中的文本视图才能工作吗?我确实有一个网格项xml文件,arrayadapter正在调用,这是你的意思吗?是的,你需要一个文本视图,我需要n隐藏您的项目布局。
ArrayAdapter
将在需要时调用此视图。谢谢。很抱歉,这个简单的问题,但是我如何将textview添加到listview中?不是添加到listview中,而是添加到R.layout.grid\u项目中。这是您自己定义的项目布局,对吗?您可以在那里更改任何您想要的内容,因此您可以可以添加文本视图。或者只需使用android.R.layout.simple\u list\u item\u 1尝试第一个选项,以确保您的方式正确。也许这就足够了。