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());
}
}

现在您的 questionList of 0(index 0) 将包含与问题 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 回答