I'm trying to make a quiz game. But I can not write questions into Database. getAllQuestions method in DBHelper does not work properly and I even don't know why. Here is my DBHelper and Quiz Activity classes, if you can help me I'll be grateful.
DBHelper :
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.*;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "guessArtist";
// tasks table name
private static final String TABLE_QUEST = "quest";
// tasks Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_IMG = "image";
private static final String KEY_QUES = "question";
private static final String KEY_ANSWER = "answer"; //correct option
private static final String KEY_OPTA= "opta"; //option a
private static final String KEY_OPTB= "optb"; //option b
private static final String KEY_OPTC= "optc"; //option c
private static final String KEY_OPTD= "optd"; //option c
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUEST +
" ( " + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+KEY_IMG + "TEXT,"
+KEY_QUES + " TEXT, "
+KEY_ANSWER+ " TEXT, "
+KEY_OPTA +" TEXT, "
+KEY_OPTB +" TEXT, "
+KEY_OPTC+" TEXT, "
+KEY_OPTD + "TEXT)";
db.execSQL(sql);
//db.close();
}
public void addQuestions()
{
Question q1= new Question("manet_launcheon_on_the_grass","Who made this work?", "Edouard Manet", "Claude Monet", "Rembrant", "Edouard Manet","Francisco Goya");
this.addQuestion(q1);
Question q2= new Question("monet_impression_sunrise","Who made this work?", "Claude Monet", "Claude Monet", "Vincent Van Gogh ", "Gustave Courbet","Gustave Caillebotte");
this.addQuestion(q2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUEST);
// Create tables again
onCreate(db);
}
// Adding new question
public void addQuestion(Question quest) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_IMG, quest.getImage());
values.put(KEY_QUES, quest.getQuestion());
values.put(KEY_ANSWER, quest.getAnswer());
values.put(KEY_OPTA, quest.getCaseA());
values.put(KEY_OPTB, quest.getCaseB());
values.put(KEY_OPTC, quest.getCaseC());
values.put(KEY_OPTD, quest.getCaseD());
// Inserting Row
db.insert(TABLE_QUEST, null, values);
db.close();
}
public List<Question> getAllQuestions() {
List<Question> quesList = new ArrayList<Question>();
// Select All Query
SQLiteDatabase db = this.getReadableDatabase();
String selectQuery = "SELECT * FROM " + TABLE_QUEST;
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Question quest = new Question();
quest.setID(cursor.getInt(0));
quest.setImage(cursor.getString(1));
quest.setQuestion(cursor.getString(2));
quest.setAnswer(cursor.getString(3));
quest.setCaseA(cursor.getString(4));
quest.setCaseB(cursor.getString(5));
quest.setCaseC(cursor.getString(6));
quest.setCaseD(cursor.getString(7));
quesList.add(quest);
} while (cursor.moveToNext());
}
// return quest list
return quesList;
}
public int questionCount()
{
int row=0;
String selectQuery = "SELECT * FROM " + TABLE_QUEST;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
row=cursor.getCount();
cursor.close();
return row;
}
}
QuizActivity:
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import java.util.List;
import static guesstheartist.fkaya.com.guesstheartist.R.raw.manet_launcheon_on_the_grass;
public class QuizActivity extends Activity {
List<Question> questionList;
int score = 0;
int id = 0;
Question question;
RadioButton A, B, C, D;
TextView quesInfo;
Button next;
ImageView queImage;
String imgName;
private DBHelper database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.quiz_activity);
database = new DBHelper(this);
database.addQuestions();
questionList = database.getAllQuestions();
question = questionList.get(id);
queImage = (ImageView) findViewById(R.id.queImg);
quesInfo = (TextView) findViewById(R.id.queView);
A = (RadioButton) findViewById(R.id.ABtn);
B = (RadioButton) findViewById(R.id.BBtn);
C = (RadioButton) findViewById(R.id.CBtn);
D = (RadioButton) findViewById(R.id.DBtn);
next = (Button) findViewById(R.id.nextBtn);
setQuestionView();
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
private void setQuestionView()
{
imgName = question.getImage();
if(imgName == "manet_launcheon_on_the_grass"){
queImage.setImageResource(R.raw.manet_launcheon_on_the_grass);
quesInfo.setText(question.getQuestion());
A.setText(question.getCaseA());
B.setText(question.getCaseB());
C.setText(question.getCaseC());
D.setText(question.getCaseD());}
else if(imgName == "monet_impression_sunrise") {
queImage.setImageResource(R.raw.monet_impression_sunrise);
quesInfo.setText(question.getQuestion());
A.setText(question.getCaseA());
B.setText(question.getCaseB());
C.setText(question.getCaseC());
D.setText(question.getCaseD());}
id++;
}
}
Aucun commentaire:
Enregistrer un commentaire