Can't write query to call second question from DB. Couldn't solve myself.

I am making a small quiz app. There are 3 categories and every category has 3 questions (9 questions). I use GridView, Adapters and Loaders. Now on Activity I call first question of every category. On adapter There are TextView for quesion, 4 Radiobuttons for answers and a Button for Next question. I read many topics and
tutorials about quiz, query, RadioGroup and RadioButtons. When i press Button question must change to another question but I even can’t solve RadioButon’s getCheckedRadioButtonId. It’s always throwing error. Please help me, show me where is my mistake. I stopped here. At least 7 days passed when i come face to face with this problem. I myself can’t solve this problem. Dear professionals please help me, show me some codes and point me to right way. Thanks very much.

DB


public List<HashMap<String, Category>> allCat(Context context){

    SQLiteDatabase db = this.getReadableDatabase();
   List<HashMap<String, Category>> list = new ArrayList<HashMap<String, Category>>();
   String s = "select * from category";
   Cursor cursor = db.rawQuery(s, null);
   int count = 0;
   if (cursor.moveToFirst()){
       do {
           Resources resources = context.getResources();
           HashMap<String, Category> hm = new HashMap<String, Category>();
           hm.put("category", new Category(cursor.getInt(1), resources.getIdentifier(context.getPackageName()

+ ":drawable/" +
           cursor.getString(cursor.getColumnIndex("image")), null, null), cursor.getString(2)));
           list.add(hm);
           count ++;
       }
       while (cursor.moveToNext());
   }
   db.close();
   return list;
}

public List<Questions> allQuestions(int id){
   SQLiteDatabase db = this.getReadableDatabase();
   List<Questions> questionses = new ArrayList<Questions>();
   String st = "select * from matem where category_id=" + id;

    Cursor cursor = db.rawQuery(st, null);

   if (cursor.moveToFirst()){
       do {       Questions questions = new Questions(cursor.getInt(0),
                   cursor.getString(1), cursor.getString(2),
                   cursor.getString(3), cursor.getString(4),
                   cursor.getString(5), cursor.getString(6),
                   cursor.getString(7), cursor.getInt(8), cursor.getInt(9));
                   questionses.add(questions);
       }while (cursor.moveToNext());
  }
   db.close();
   return questionses;
}

QuestionLoader


public class QuestionsLoaders extends AsyncTaskLoader<List<Questions>>{
    public int id;
    public QuestionsLoaders(Context context, int id) {
        super(context);
        this.id=id;
    }
    @Override
    public List<Questions> loadInBackground() {
        return new DbHelper(getContext()).allQuestions(id);
    }

QuestionAdapter


public class QuestionsAdapter extends BaseAdapter{
    Context context;
    LayoutInflater inflater;
    DbHelper dbHelper;
    Button btn_next;
    RadioGroup radioGroup;
    RadioButton rb,radAns1,radAns2,radAns3,radAns4;;
    List<Questions> questionsList;
    int nextQ = 0;
    int score = 0;
    int qid = 0;

    public QuestionsAdapter() {
    }

    public QuestionsAdapter(Context context, List<Questions> questionsList) {
        if (questionsList != null) {
            this.questionsList = questionsList;
            this.context = context;
            inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            dbHelper = new DbHelper(this.context);
        }
    }

    @Override
    public int getCount() {
        return questionsList.size();
    }

    @Override
    public Object getItem(int position) {
        return questionsList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final View view = inflater.inflate(R.layout.question_list, null);
        final Questions questions = questionsList.get(position);

        btn_next = (Button) view.findViewById(R.id.btn_next);

        final TextView question = (TextView) view.findViewById(R.id.textQuestion);
        question.setText(questions.getVopros());
        final RadioButton radAns1 = (RadioButton) view.findViewById(R.id.radAns1);
        radAns1.setText(questions.getAns_1());
        final RadioButton radAns2 = (RadioButton) view.findViewById(R.id.radAns2);
        radAns2.setText(questions.getAns_2());
        final RadioButton radAns3 = (RadioButton) view.findViewById(R.id.radAns3);
        radAns3.setText(questions.getAns_3());
        final RadioButton radAns4 = (RadioButton) view.findViewById(R.id.radAns4);
        radAns4.setText(questions.getAns_4());
        final TextView textAns = (TextView) view.findViewById(R.id.textAns);
        textAns.setText("Right answer:" + questions.getAns_r());

        radioGroup = (RadioGroup)view.findViewById(R.id.radioGroup);
        radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if (checkedId == radAns1.getId()){
                    Toast.makeText(view.getContext().getApplicationContext(), "Checked id: " + radAns1.getId(), 

Toast.LENGTH_SHORT).show();
                }else if (checkedId == radAns2.getId()){
                    Toast.makeText(view.getContext().getApplicationContext(), "Checked id: " + radAns2.getId(), 

Toast.LENGTH_SHORT).show();
                }else if (checkedId == radAns3.getId()){
                    Toast.makeText(view.getContext().getApplicationContext(), "Checked id: " + radAns3.getId(), 

Toast.LENGTH_SHORT).show();
                }else if (checkedId == radAns4.getId()){
                    Toast.makeText(view.getContext().getApplicationContext(), "Checked id: " + radAns4.getId(), 

Toast.LENGTH_SHORT).show();
                }
            }
        });

        btn_next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                radioGroup = (RadioGroup)v.findViewById(R.id.radioGroup);
                    int selectedId = radioGroup.getCheckedRadioButtonId();
                    rb = (RadioButton)v.findViewById(selectedId);

//                radioGroup.setOnCheckedChangeListener();
            }

        });

        return view;
    }

question1.jpg

Please help me to write my code. Please point me to right way. Thanks very much.

You do not need an sql database for nine questions and a couple of alternative answers.
You can use stringresources and put them in a array.
Android Essentials: Working with Strings and String Arrays - Tuts+ Code Tutorial

You could set it up like this: <item>question1, answerA, answerB, answerC, answerD, correctAnswer<item>
put this string in a multi-array by exploding the comma, and you have al the information you need.
You could use JSON format as well.

int i=0
for next question, add 1 like:

i++
String question=questionArray[0][i];
String alt_answerA=questionArray[1][i];
String correct_answer=questionArray[5][i];

Hi there, Connect with us to get the code and suggestion in details.