2016-11-02 3 views
-1

Я пытаюсь прочитать данные из api, заполнить это в БД и показать его в виде списка. Я продолжаю получать из индекса, но я не уверен, почему. Книга - это простой книжный класс со строгим номером телефонаNo и строковым именем. Я могу получить данные. Я получаю правильный вывод, когда я печатаю данные, которые я получаю, но я продолжаю входить в проблемы, когда я пытаюсь вставить данные в базу данных и извлечь их.Индекс за пределами в android

  List<Book> list = db.getAllBooks(); 
      for(int i = 0; i<4; i++) { 
       thatName[i] = list.get(i).getName(); 
       thatMobile[i] = list.get(i).getPhoneNo(); 
       Log.d("List 1", thatName[i]); 
       Log.d("List 2", thatMobile[i]); 
      } 

      customListViewAdapter = new CustomListViewAdapter(getApplication(),thatName,thatMobile); 

      listView.setAdapter(customListViewAdapter); 
    }; 

}

DB

public List<Book> getAllBooks() { 
    List<Book> books = new LinkedList<Book>(); 

    // 1. build the query 
    String query = "SELECT * FROM " + TABLE_BOOKS; 

    // 2. get reference to writable DB 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(query, null); 

    // 3. go over each row, build book and add it to list 
    Book book = null; 
    if (cursor.moveToFirst()) { 
     do { 
      book = new Book(); 
      book.setPhoneNo(cursor.getString(1)); 
      book.setName(cursor.getString(0)); 
      //book.setAuthor(cursor.getString(2)); 

      // Add book to books 
      books.add(book); 
     } while (cursor.moveToNext()); 
    } 

    Log.d("getAllBooks()", books.toString()); 

    // return books 
    return books; 
} 
+0

Опубликуйте LogCat пожалуйста – JpCrow

+3

для (INT I = 0; я < 4; i ++) Возможно, у вас нет 4 книг в базе данных? – Alex

ответ

1

Вы задаете четыре детали вы будете перебор:

for(int i = 0; i<4; i++) { 
    thatName[i] = list.get(i).getName(); 
    thatMobile[i] = list.get(i).getPhoneNo(); 
    Log.d("List 1", thatName[i]); 
    Log.d("List 2", thatMobile[i]); 
} 

IndexOutOfBoundsException означает, что вы пытаетесь получить элемент из списка по индексу, превышающему максимальный индекс в списке. Вместо этого вы можете попытаться выяснить количество элементов в списке:

for(int i = 0; i < list.size(); i++) 

или пути просто перебора самого списка:

for(Book book: list) 
+0

безупречное спасибо – john

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