2015-01-15 2 views
0

다음 및 이전 질문을 가져 오기위한 다음 및 이전 버튼이라는 두 개의 버튼이있는 퀴즈 앱을 만들고 있습니다. 다음 질문을 가져올 수 있지만 이전 질문을 가져올 수 없습니다. 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(); 
     } 
    } 
+0

이것이 문제라고 생각합니다. Pitem = Pquest.get (qID); try Pitem = Pquest.get (qID-1); –

+0

당신은'Pquest'와'Nquest'의 pre에서 데이터를 얻는 이유는 무엇입니까? 나는 당신이 하나의 목록에서 얻을 필요가 있다고 생각합니다. 그리고 q 대신 qId-2를 사용해야합니다. 다음 질문은 qId-1입니다. 현재 질문이므로 qId-2를 사용하고 qId를 증가 시키십시오. 당신의 논리 후에 다음 버튼처럼 –

+0

왜 이전과 다음 작업을 위해 같은 목록 즉 Nquest를 사용하지 않습니다. 이 줄 바꾸기 Pitem = Pquest.get (qID); Pitem = Nquest.get (qID); 이전 클릭 및 테스트에서 – Pavya

답변

0

list.get(variable)을 사용하는 ArrayList

+0

나는 이것을 이미하고 증분 (qID ++)으로 다음 질문을 가져 왔지만 감소 (qID--)에서 올바르게 작동하지 않았다. – Aparana

+0

올바른 증가/감소를 사용 했습니까? 예를 들어 사용 전에 var ++가 증가하고 ++ var가 사용되는 경우 – cruelcore1

관련 문제