Создание курсора для использования в ListView

То, что я пытаюсь сделать здесь, это сделать Cursor что может быть использовано в Android 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 ответ

Решение

Если это весь код, то это нормально, потому что вы пытаетесь добавить строку на нулевом курсоре (вы никогда не инициализируете cursor) и, вероятно, получить NullPointerException, Инициализировать MatrixCursor прежде чем войти в цикл for:

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

Проверьте документы.

Другие вопросы по тегам