Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中使用SQLite在不同的单选按钮中动态显示单选按钮_Android_Sqlite_Loops_Android Radiogroup_Android Radiobutton - Fatal编程技术网

如何在Android中使用SQLite在不同的单选按钮中动态显示单选按钮

如何在Android中使用SQLite在不同的单选按钮中动态显示单选按钮,android,sqlite,loops,android-radiogroup,android-radiobutton,Android,Sqlite,Loops,Android Radiogroup,Android Radiobutton,我正在尝试构建一个测试应用程序,其中包含以下问题和答案: 问题1: 单选按钮-问题1的答案1 单选按钮-问题1的答案2 单选按钮-问题1的答案3 单选按钮-问题1的答案4 问题2: 单选按钮-问题2的答案1 单选按钮-问题2的答案2 单选按钮-问题2的答案3 单选按钮-问题2的答案4 等等。问题是,当我尝试循环遍历数据库结果时,结果显示如下: 问题1: 单选按钮-问题1的答案1 单选按钮-问题1的答案2 单选按钮-问题1的答案3 单选按钮-问题1的答案4 单选按钮-问题2的答案1 单选按钮-问题

我正在尝试构建一个测试应用程序,其中包含以下问题和答案:

问题1:
单选按钮-问题1的答案1
单选按钮-问题1的答案2
单选按钮-问题1的答案3
单选按钮-问题1的答案4
问题2:
单选按钮-问题2的答案1
单选按钮-问题2的答案2
单选按钮-问题2的答案3
单选按钮-问题2的答案4

等等。问题是,当我尝试循环遍历数据库结果时,结果显示如下:

问题1:
单选按钮-问题1的答案1
单选按钮-问题1的答案2
单选按钮-问题1的答案3
单选按钮-问题1的答案4
单选按钮-问题2的答案1
单选按钮-问题2的答案2
单选按钮-问题2的答案3
单选按钮-问题2的答案4
问题2:
单选按钮-问题1的答案1
单选按钮-问题1的答案2
单选按钮-问题1的答案3
单选按钮-问题1的答案4
单选按钮-问题2的答案1
单选按钮-问题2的答案2
单选按钮-问题2的答案3
单选按钮-问题2的答案4

如何为每个问题仅显示4个单选按钮(4个答案)?这是我的主要活动。java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DBHandler db = new DBHandler(this);

    // Inserting Questions
    db.addQuestion(new Question("Question1?", 1));
    db.addQuestion(new Question("Question2?", 2));
    db.addQuestion(new Question("Question3?", 3));
    db.addQuestion(new Question("Question4?", 4));

    // Inserting Answers / Correct Answer (1 for true, 0 for false)
    db.addAnswer(new Answer("Answer1 for Question1", 1, 0));
    db.addAnswer(new Answer("Answer2 for Question1", 1, 0));
    db.addAnswer(new Answer("Answer3 for Question1", 1, 1));
    db.addAnswer(new Answer("Answer4 for Question1", 1, 0));

    db.addAnswer(new Answer("Answer1 for Question2", 2, 0));
    db.addAnswer(new Answer("Answer2 for Question2", 2, 0));
    db.addAnswer(new Answer("Answer3 for Question2", 2, 1));
    db.addAnswer(new Answer("Answer4 for Question2", 2, 0));

    // Reading all Questions
    List<Question> questions = db.getAllQuestions();
    // Reading all Answers
    List<Answer> answers = db.getAllAnswers();

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);

    for (Question qn : questions) {
        String question_log = " Question: " + qn.getQuestion();
        //Create Question Text
        TextView question = new TextView(this);
        question.setText(question_log);
        question.setTextColor(Color.BLUE);
        linearLayout.addView(question);
        //Create Radio Button Answers
        final RadioButton[] radioButton = new RadioButton[4];
        RadioGroup radioGroup = new RadioGroup(this);
        radioGroup.setOrientation(RadioGroup.VERTICAL);
        for (int i = 0; i < 1; i++) {
            for (Answer an : answers) {
                String answers_log = " " + an.getAnswer();
                radioButton[i] = new RadioButton(this);
                radioGroup.addView(radioButton[i]);
                radioButton[i].setText(answers_log);
            }
        }
        linearLayout.addView(radioGroup);
    }
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DBHandler db=新的DBHandler(此);
//插入问题
db.添加问题(新问题(“问题1?”,1));
db.补充问题(新问题(“问题2?”,2));
db.补充问题(新问题(“问题3?”,3));
db.补充问题(新问题(“问题4?”,4));
//插入答案/正确答案(1表示正确,0表示错误)
db.添加答案(新答案(“问题1的答案1”,1,0));
db.添加答案(新答案(“问题1的答案2”,1,0));
db.添加答案(新答案(“问题1的答案3”,1,1));
db.添加答案(新答案(“问题1的答案4”,1,0));
db.添加答案(新答案(“问题2的答案1”,2,0));
db.添加答案(新答案(“问题2的答案2”,2,0));
db.添加答案(新答案(“问题2的答案3”,2,1));
db.添加答案(新答案(“问题2的答案4”,2,0));
//阅读所有问题
列出问题=db.getAllQuestions();
//阅读所有答案
列表答案=db.getAllAnswers();
LinearLayout LinearLayout=(LinearLayout)findViewById(R.id.LinearLayout);
(问题qn:问题){
字符串question_log=“question:+qn.getQuestion();
//创建问题文本
TextView问题=新的TextView(此);
question.setText(问题日志);
问题.setTextColor(Color.BLUE);
linearLayout.addView(问题);
//创建单选按钮答案
最终单选按钮[]单选按钮=新单选按钮[4];
射线组射线组=新射线组(此);
放射组设置方向(放射组垂直);
对于(int i=0;i<1;i++){
for(答案A:答案){
字符串answers_log=”“+an.getAnswer();
radioButton[i]=新的radioButton(本);
radioGroup.addView(单选按钮[i]);
单选按钮[i].setText(应答日志);
}
}
linearLayout.addView(放射组);
}
}
这是我的DBHandler:

private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "iqTest";

private static final String TABLE_QUESTIONS = "questions";
// Question Table Columns Names
private static final String KEY_QUESTION_ID = "question_id";
private static final String KEY_QUESTION = "question";
private static final String KEY_ORDER_NO = "order_no";

private static final String TABLE_ANSWERS = "answers";
// Answer Table Columns Names
private static final String KEY_ANSWER_ID = "answer_id";
private static final String KEY_ANSWER = "answer";
private static final String KEY_QUESTION_ID_ANSWER = "question_id_answer";
private static final String KEY_CORRECT_ANSWER = "correct_answer";


<pre>public DBHandler(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_QUESTIONS_TABLE = "CREATE TABLE " + TABLE_QUESTIONS + "("
            + KEY_QUESTION_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUESTION + " TEXT, "
            + KEY_ORDER_NO + " INTEGER " + ")";

    String CREATE_ANSWERS_TABLE = "CREATE TABLE " + TABLE_ANSWERS + "("
            + KEY_ANSWER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_ANSWER + " TEXT, "
            + KEY_QUESTION_ID_ANSWER + " INTEGER, " + KEY_CORRECT_ANSWER + " INTEGER " + ")";

    db.execSQL(CREATE_QUESTIONS_TABLE);
    db.execSQL(CREATE_ANSWERS_TABLE);
}

// Upgrading Database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUESTIONS);
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_ANSWERS);
    onCreate(db);
}

// Adding New Question
void addQuestion(Question question) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_QUESTION, question.getQuestion());
    values.put(KEY_ORDER_NO, question.getorderNo());

    db.insert(TABLE_QUESTIONS, null, values);
    db.close();
}

// Getting All Questions
public List<Question> getAllQuestions() {
    List<Question> questionList = new ArrayList<Question>();
    String selectQuery = "SELECT  * FROM " + TABLE_QUESTIONS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // Looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Question question = new Question();
            question.setID(Integer.parseInt(cursor.getString(0)));
            question.setQuestion(cursor.getString(1));
            question.setorderNo(Integer.parseInt(cursor.getString(2)));
            // Adding Questions to List
            questionList.add(question);
        } while (cursor.moveToNext());
    }
    return questionList;
}

// Adding New Answer
void addAnswer(Answer answer) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_ANSWER, answer.getAnswer());
    values.put(KEY_QUESTION_ID_ANSWER, answer.getQuestion_id_answer());
    values.put(KEY_CORRECT_ANSWER, answer.getCorrect_answer());

    db.insert(TABLE_ANSWERS, null, values);
    db.close();
}

// Getting All Answers
public List<Answer> getAllAnswers() {
    List<Answer> answerList = new ArrayList<Answer>();
    String selectQuery = "SELECT  * FROM " + TABLE_ANSWERS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // Looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Answer answer = new Answer();
            answer.setAnswer_id(Integer.parseInt(cursor.getString(0)));
            answer.setAnswer(cursor.getString(1));
            answer.setQuestion_id_answer(Integer.parseInt(cursor.getString(2)));
            answer.setCorrect_answer(Integer.parseInt(cursor.getString(3)));
            // Adding Questions to List
            answerList.add(answer);
        } while (cursor.moveToNext());
    }
    return answerList;
}
private static final int DATABASE_VERSION=1;
私有静态最终字符串数据库\u NAME=“iqTest”;
私有静态最终字符串表\u QUESTIONS=“QUESTIONS”;
//问题表列名称
私有静态最终字符串键\u QUESTION\u ID=“QUESTION\u ID”;
私有静态最终字符串密钥\u QUESTION=“QUESTION”;
私有静态最终字符串键\u ORDER\u NO=“ORDER\u NO”;
私有静态最终字符串表\u ANSWERS=“ANSWERS”;
//应答表列名称
私有静态最终字符串键\u ANSWER\u ID=“ANSWER\u ID”;
私有静态最终字符串键\u ANSWER=“ANSWER”;
私有静态最终字符串键\u QUESTION\u ID\u ANSWER=“QUESTION\u ID\u ANSWER”;
私有静态最终字符串键\u CORRECT\u ANSWER=“CORRECT\u ANSWER”;
公共DBHandler(上下文){
super(上下文、数据库名称、null、数据库版本);
}
//创建表
@凌驾
public void onCreate(SQLiteDatabase db){
字符串CREATE_QUESTIONS_TABLE=“CREATE TABLE”+TABLE_QUESTIONS+”(“
+KEY\u QUESTION\u ID+“整数主键自动递增,”+KEY\u QUESTION+“文本,”
+键\顺序\编号+“整数”+”;
字符串CREATE\u ANSWERS\u TABLE=“CREATE TABLE”+TABLE\u ANSWERS+”(“
+KEY\u ANSWER\u ID+“整数主键自动递增,”+KEY\u ANSWER+“文本,”
+键\问题\ ID \答案+“整数”++键\正确\答案+“整数”+”;
execSQL(创建问题表);
execSQL(创建答案表);
}
//升级数据库
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在,删除表格”+表格问题);
db.execSQL(“如果存在删除表”+表_);
onCreate(db);
}
//添加新问题
无效添加问题(问题){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues=新的ContentValues();
value.put(KEY_-QUESTION,QUESTION.getQuestion());
value.put(KEY\u ORDER\u NO,question.getorderNo());
db.insert(表_问题,空,值);
db.close();
}
//了解所有问题
公共列表getAllQuestions(){
List questionList=新建ArrayList();
String selectQuery=“SELECT*FROM”+表格\问题;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
问题=新问题();
for (Answer an : answers)
//Create Radio Button Answers
RadioGroup radioGroup = new RadioGroup(this);
radioGroup.setOrientation(RadioGroup.VERTICAL);

for (Answer an : answers) {
    if (an.Question == qn) {
        String answers_log = " " + an.getAnswer();
        RadioButton radioButton = new RadioButton(this);
        radioButton.setText(answers_log);
        radioGroup.addView(radioButton);
    }
}