Создание курсора для использования в ListView - PullRequest
0 голосов
/ 24 февраля 2012

То, что я пытаюсь сделать здесь, - это создать 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 Ответ

2 голосов
/ 24 февраля 2012

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

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

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

...