다음 및 이전 질문을 가져 오기위한 다음 및 이전 버튼이라는 두 개의 버튼이있는 퀴즈 앱을 만들고 있습니다. 다음 질문을 가져올 수 있지만 이전 질문을 가져올 수 없습니다. Google과 R & D와 관련하여 많은 정보를 얻었으나 올바른 해결책을 찾지 못했습니다. 여기 arraylist에서 이전 레코드를 android에 가져 오는 방법은 무엇입니까?
내 코드입니다 :데이터베이스 :
public List<NotificationListItem> getNQuestions(String tid) {
List<NotificationListItem> quest = new ArrayList<NotificationListItem>();
openToRead();
Cursor cursor = db.rawQuery("SELECT * FROM quiz_list"+ " where tid = ?", new String[] { tid});
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
NotificationListItem item = new NotificationListItem();
int id=cursor.getColumnIndex(QuizTable.KEY_QID);
int answer=cursor.getColumnIndex(QuizTable.KEY_ANSWER);
int testid=cursor.getColumnIndex(QuizTable.KEY_TESTID);
int questions=cursor.getColumnIndex(QuizTable.KEY_QUES);
int option1=cursor.getColumnIndex(QuizTable.KEY_OP1);
int option2=cursor.getColumnIndex(QuizTable.KEY_OP2);
int option3=cursor.getColumnIndex(QuizTable.KEY_OP3);
int option4=cursor.getColumnIndex(QuizTable.KEY_OP4);
int option5=cursor.getColumnIndex(QuizTable.KEY_OP5);
int anscount=cursor.getColumnIndex(QuizTable.KEY_ANSC);
int totalchoice=cursor.getColumnIndex(QuizTable.KEY_TC);
item.qID=cursor.getInt(id);
item.answer=cursor.getString(answer);
item.testID=cursor.getString(testid);
item.questions=cursor.getString(questions);
item.option1=cursor.getString(option1);
item.option2=cursor.getString(option2);
item.option3=cursor.getString(option3);
item.option4=cursor.getString(option4);
item.option5=cursor.getString(option5);
item.anscount=cursor.getString(anscount);
item.tc=cursor.getString(totalchoice);
quest.add(item);
} while (cursor.moveToNext());
}
// return quest list
return quest;
}
QuizActivity :
당신은 youself 당신이 증가 또는 감소,과에서 원하는 기록을 인출해야int
변수를 만들 수
NotificationListItem Nitem;
List<NotificationListItem> Nquest;
nextBT = (Button) findViewById(R.id.nextBtIV);
prevBT = (Button) findViewById(R.id.prevIV);
prevBT.setEnabled(false);
quizTable = new QuizTable(this);
quizTable.openToRead();
quizTable.openToWrite();
Nquest=quizTable.getNQuestions(testID);
Nitem=Nquest.get(questionid);
setQuestionView();
nextBT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultquiz();
if(qID<Nquest.size()){
Nitem=Nquest.get(qID);
prevBT.setEnabled(true);
setQuestionView();
qID++;
}
else{
Intent intent = new Intent(QuizActivityB.this, TestAnalysisActivity.class);
intent.putExtra("totalquestion",qs);
intent.putExtra("testtime",time);
intent.putExtra("testname", testName);
intent.putExtra("testID", testID);
intent.putExtra("currentDateandTime", date);
intent.putExtra("totalattemp",totalattempt);
intent.putExtra("totalMarks", totalMarks);
intent.putExtra("subject", subject);
intent.putExtra("score", finalscore);
intent.putExtra("percentage", percentage);
intent.putExtra("timecounter", timeCounterFinish);
intent.putExtra("correctAns", cAns);
intent.putExtra("negativeAns", nAns);
intent.putExtra("comments", comments);
startActivity(intent);
finish();
}}
});
prevBT.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(qID>0){
Pitem=Pquest.get(qID);
setQuestionView();
qID--;
}}
});
private void setQuestionView()
{
txtQuestion.setText(Nitem.getquestions());
op1=(Nitem.getOption1());
op2=(Nitem.getOption2());
op3=(Nitem.getOption3());
op4=(Nitem.getOption4());
op5=(Nitem.getOption5());
ans=(Nitem.getAnswer());
ansc=Nitem.getAnscount();
tc=(Nitem.getTc());
questionid=(Nitem.getqID());
totalchoice=Integer.parseInt(tc);
anscount=Integer.parseInt(ansc);
System.out.println("QUESTIONID="+questionid);
System.out.println("ANSWER="+ans);
if(anscount==1)
{
rc.removeAllViews();
addRadioButtons();
}
else if(anscount>1)
{
rc.removeAllViews();
addCheckButtons();
}
}
이것이 문제라고 생각합니다. Pitem = Pquest.get (qID); try Pitem = Pquest.get (qID-1); –
당신은'Pquest'와'Nquest'의 pre에서 데이터를 얻는 이유는 무엇입니까? 나는 당신이 하나의 목록에서 얻을 필요가 있다고 생각합니다. 그리고 q 대신 qId-2를 사용해야합니다. 다음 질문은 qId-1입니다. 현재 질문이므로 qId-2를 사용하고 qId를 증가 시키십시오. 당신의 논리 후에 다음 버튼처럼 –
왜 이전과 다음 작업을 위해 같은 목록 즉 Nquest를 사용하지 않습니다. 이 줄 바꾸기 Pitem = Pquest.get (qID); Pitem = Nquest.get (qID); 이전 클릭 및 테스트에서 – Pavya