0

質問と回答に基づいたアプリを開発しています。

res/raw データベースを使用してデータを取得しています。そのための検索オプションを用意する予定です。つまり、検索ボックスを一番下に置いて、100 の質問があるとします。私がしたいことは、質問 45 番に移動することです。検索ボックスに番号を入力して。私はこれに取り組むことに何の考えもありません。解決策を見つけるのを手伝ってください

protected void loadQuestionset1() throws Exception {
try {
InputStream questionset1 = this.getBaseContext().getResources()
                    .openRawResource(R.raw.questionset1);
bReader = new BufferedReader(new InputStreamReader(questionset1));
StringBuilder quesString = new StringBuilder();
            String aJsonLine = null;
            while ((aJsonLine = bReader.readLine()) != null) {
                quesString.append(aJsonLine);
            }
Log.d(this.getClass().toString(), quesString.toString());
            JSONObject quesObj = new JSONObject(quesString.toString());
            quesList1 = quesObj.getJSONArray("Questions");
            Log.d(this.getClass().getName(),
                    "Num Questions " + quesList1.length());
            }
catch (Exception e){

            } finally {
                try {
                    bReader.close();
                } catch (Exception e) {
                    Log.e("", e.getMessage().toString(), e.getCause());
                }

            }


        }
public static JSONArray getQuesList1() {
            return quesList1;
        }
4

1 に答える 1

0
 public  ArrayList<NewQuestion> questionList=new ArrayList<NewQuestion>();

データベースから質問を受けるたびに

 NewQuestion newQuestion=new NewQuestion();     
 newQuestion.question.put(NewQuestion.QUESTION_TEXT,q);
 newQuestion.question.put(NewQuestion.OPTION_1,q);
 newQuestion.question.put(NewQuestion.QPTION_2,q);
 newQuestion.question.put(NewQuestion.OPTION_3,q);
 newQuestion.question.put(NewQuestion.OPTION_4,q);    
 questionList.add(newQuestion);     


 public class NewQuestion {

 public static List<String> q12=new ArrayList<String>();
 public static final String QUESTION_TEXT="questionText";
 public static final String OPTION_1="option1";
 public static final String OPTION_2="option2";
 public static final String OPTION_3="option3";
 public static final String OPTION_4="option4";
 public static final String CORRECT_ANSWER="answer";

 Hashtable question=new Hashtable();

 public NewQuestion()
 {

    question.put(NewQuestion.QUESTION_TEXT,new String());
    question.put(NewQuestion.OPTION_1,new String());
    question.put(NewQuestion.OPTION_2,new String());
    question.put(NewQuestion.OPTION_3,new String());
    question.put(NewQuestion.OPTION_4,new String());
    question.put(NewQuestion.CORRECT_ANSWER,new String());
}
}

これで、0 (インデックス 0) の questionList に質問 1 に関連するデータが含まれます。ユーザーが 40 を入力すると、40 のデータにアクセスできます。

        newQuestion=(NewQuestion)questionList.get(questionNo);//question no 45

        String q=newQuestion.question.get(NewQuestion.QUESTION_TEXT).toString();//get question
         String op1=newQuestion.question.get(NewQuestion.OPTION_1).toString();
         String op2=newQuestion.question.get(NewQuestion.OPTION_2).toString();
         String op3=newQuestion.question.get(NewQuestion.OPTION_3).toString();
         String op4=newQuestion.question.get(NewQuestion.OPTION_4).toString();

生のデータベースから 45 番目の位置にある質問セットに直接アクセスできる場合は、上記を使用する必要はありません。arraylist はすべてのデータを格納するため、上記の手順は理想的ではありません。サイズが大きくなると、操作が遅くなる場合があります。

質問と回答を格納するためのデータベース (sqlite) がある場合は、クエリを使用してデータベースからデータを取得する方が簡単です。

于 2013-03-29T11:12:23.460 に答える