制作游标以在ListView中使用

时间:2012-02-24 15:51:00

标签: android android-listview matrixcursor

我在这里要完成的是创建一个可以在android Cursor中使用的ListView。我正在直接从多个文件中读取值,并且必须将它们提供给光标。我尝试使用MatrixCursor,但我无法使用数组。我已经将我的尝试发布到目前为止,我对所有新建议持开放态度。有更简单的方法吗?

static MatrixCursor getnameList() {
        ArrayList<String> fsitem = getfsiList();
        MatrixCursor cursor;
        cursor = null;
        for (int i = 0; i < fsitem.size(); i++) {
            try {
                File root = new File(Environment.getExternalStorageDirectory()
                        .getName() + "/" + fsitem.get(i));
                if (root.canRead()) {
                    File namefile = new File(root, ".name");
                    FileReader namereader = new FileReader(namefile);
                    BufferedReader in = new BufferedReader(namereader);
                    String name = in.readLine();
                    String id = in.readLine();
                    String info = in.readLine();
                    String[] fsii = new String[3];
                    fsii[0]= name;
                    fsii[1]= id;
                    fsii[2]= info;
                    cursor.addRow(fsii); //crashes here on running.
                }

            } catch (IOException e) {
                Log.e("NameManager.java : ", ("Error!! Not Writable!!"
                        + Environment.getExternalStorageDirectory().getName()
                        + "/" + fsitem.get(i)));
            }
        }

此代码在cursor.addRow(fsii);编译但崩溃:

with 02-24 21:16:49.589: E/AndroidRuntime(3895): at com.manager.abcd.r1223.NameManager.getnameList(NameManager.java:81)

我认为这是MartixCursor不支持数组的问题,但我可能错了。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果这是所有代码,那么它是正常的,因为您尝试在空游标上添加一行(您永远不会初始化cursor)并且可能获得NullPointerException。 在进入for循环之前初始化MatrixCursor

String[] columnNames = {"col1", "col2", "col3"};
MatrixCursor cursor = new MatrixCursor(columnNames);

检查docs