Создание курсора для использования в 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);
Проверьте документы.