我正在开发一个基于问题和答案的应用程序。
我正在使用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;
}
答案 0 :(得分: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为0(索引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),则可以更轻松地从查询中的数据库中获取数据。