2015-05-26 4 views
-1

Я пытаюсь сделать опрос с несколькими ответами. Я последовал за этот сайт: Simple Quiz GameПолучение вопросов от SQLite Android

В Multiple активность, добавить следующее:

QuestionsDbHelper db = new QuestionsDbHelper(this); 
    questionsList = db.getAllQuestions(); 
    currentQuestion=questionsList.get(questionId); 

Как вы можете видеть на последней строке я получаю эту ошибку. В QuestionDbHelper я добавил вопросы, но не могу их отобразить в Activity. Я описал действие в файле манифеста. Что я могу понять из Debug, так это то, что мой массив пуст, но я вставил список вопросов.

Любая идея?

Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
      at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) 
      at java.util.ArrayList.get(ArrayList.java:304) 
      at com.game.mlm.q2game.MultipleMode.onCreate(MultipleMode.java:36) 

Я отправляю свой код без onCreate и onUpgrade, потому что они довольно простые. Вот мой код QuestionsDbhelper:

public void addQuestions(Questions question){ 
    Log.d("add Questions" , question.toString()); 

// SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_QUESTION, question.getQuestion()); 
    values.put(KEY_ANSWER, question.getAnswer()); 
    values.put(KEY_FBUTTON, question.getFirstButton()); 
    values.put(KEY_SBUTTON, question.getSecondButton()); 
    values.put(KEY_THBUTTON, question.getThirdButton()); 

    dbase.insert(TABLE_QUESTIONS, null, values); 


} 
public List<Questions> getAllQuestions(){ 
    List<Questions> questionsList = new ArrayList<Questions>(); 
    //SELECT ALL FROM QUERY 
    String selectQuery = "SELECT * FROM " + TABLE_QUESTIONS; 
    dbase= this.getReadableDatabase(); 
    Cursor cursor = dbase.rawQuery(selectQuery, null); 
    //LOOPING THROUGH ALL ROWS AND ADDING TO LIST 
    if (cursor.moveToFirst()) { 
     do { 
      Questions question = new Questions(); 
      question.setId(cursor.getInt(0)); 
      question.setQuestion(cursor.getString(1)); 
      question.setAnswer(cursor.getString(2)); 
      question.setFirstButton(cursor.getString(3)); 
      question.setSecondButton(cursor.getString(4)); 
      question.setThirdButton(cursor.getString(5)); 
      questionsList.add(question); 
     } 
     while (cursor.moveToNext()); 
    } 
    Log.d("getAllQuestions()", questionsList.toString()); 
    return questionsList; 
} 
public int rowcount() { 
    int row = 0; 
    String selectQuery = "SELECT * FROM " + TABLE_QUESTIONS; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    row = cursor.getCount(); 
    // cursor.close(); 
    return row; 
} 
+0

'Любая идея?' ArrayList пуст (возможно, запрос вернул пустой набор результатов). –

+1

Вы можете включить код для 'QuestionsDbHelper' – EpicPandaForce

+1

Распечатайте запрос в Logcat и запустите его в браузере SQLite. Возможно, ваш запрос неверен. –

ответ

0

Вы проверили, если QuestionID правильно? У вас могут не быть данных для questionId, которые вы используете

+0

Опубликовать это как комментарий, а не как ответ. –

+0

Мне не разрешено оставлять комментарии – Peter

0

Сначала проверьте, что rowCount возвращается из вашей БД. Если да, то переместите курсор на первую позицию с помощью

cursor.moveToFirst(); 
+0

У меня есть курсор, как вы можете видеть, когда я отлаживаю, я вижу, что размер question = 0; – JumboJey

0

использовать эти строки в методе getAllQuestions() от вашего QuestionsDbHelper class.

String Query = "select * from <table name>"; 
db = openDataBase(); 
Cursor cursor = db.rawQuery(Query, null); 
// Log.d(LOG_TAG, "Cursor Length: " + cursor.getCount()); 
while (cursor.moveToNext()) { 
<Get all data from table> 
} 
Смежные вопросы