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

时间:2012-11-11 14:14:57

标签: android arrays android-listview

我正在尝试从csv文件中提取数据到数组中,然后在列表视图中显示该数组。我几乎在那里(经过大量的搜索/谷歌时间...刚接触Java / android),但无法弄清楚我做错了什么。

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

我的代码是:

   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();

当我加载活动时,我只显示空白列表视图。得到的帮助很好(我已经在textview中测试了数组,我想要的数据被分离出来,我认为问题在于我如何用我的数据填充适配器)。

感谢您的帮助。

安迪

2 个答案:

答案 0 :(得分:0)

很可能你没有具有ArrayAdapter默认期望的特定id的TextView。

尝试默认布局:

new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, splitdata);

或者尝试另一个提供TextView实际ID的构造函数,例如

new ArrayAdapter<String>(this, R.layout.grid_item, R.id.YOURTEXTVIEWID, splitdata);

答案 1 :(得分:0)

这是我正在调用的grid_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和适配器addAll,那么活动就会在启动时崩溃(意外停止)。