2012-02-24 2 views
0

Что я пытаюсь сделать здесь, это сделать Cursor, который может быть использован в android ListView. Я читаю значения непосредственно из нескольких файлов и должен их доводить до курсора. Я пытался использовать MatrixCursor, но я не могу заставить его работать с массивами. Я опубликовал свою попытку сделать это до сих пор, и я открыт для всех новых предложений. Есть ли более простой способ сделать это?Создание курсора для использования в ListView

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, не поддерживающая массивы, но я могу ошибаться. Есть идеи?

ответ

2

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

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

Проверьте docs.

+0

'cursor = new MatrixCursor;'? –

+1

@BinoyBabu Извините неполное редактирование. Проверь это сейчас. – Luksprog

+0

Но здесь 'cursor.getString (0)' дает исключение outofbounds. Является ли структура курсора действительной? –

 Смежные вопросы

  • Нет связанных вопросов^_^