Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法在listview中加载我的数组,我不知道为什么_Android_Arrays_Android Listview - Fatal编程技术网

Android 无法在listview中加载我的数组,我不知道为什么

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

我试图将数据从csv文件提取到数组中,然后在listview中显示该数组。我就快到了(经过大量的搜索/谷歌时间…对Java/android还不熟悉),但我不知道我做错了什么

我加载了一个文本文件,然后将内容提取到一个名为splitdata的字符串数组中。我希望在listview中显示splitdata数组

我的代码是:

   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尝试第一个选项,以确保您的方式正确。也许这就足够了。