简体   繁体   中英

how to get previous and next data on button click from SQlite database

I am working on QuizActivity and unable to get the Previous question from database when reach on last question then on clicking previous button then first question appears in activity. Need help stuck from last 2 days.Thanks

  DATABASE

   public List<NotificationListItem> getNQuestions() {
   List<NotificationListItem> quest = new ArrayList<NotificationListItem>();
   String selectQuery = "SELECT  * FROM " + TABLE_NAME2;
   openToRead();
   Cursor cursor = db.rawQuery(selectQuery, null);
   if (cursor.moveToFirst()) {
        do {
            NotificationListItem item = new NotificationListItem();
            item.setqID(cursor.getInt(1));
            item.setAnswer(cursor.getString(2));
            item.setTestID(cursor.getString(3));
            item.setquestions(cursor.getString(4));
            item.setOption1(cursor.getString(5));
            item.setOption2(cursor.getString(6));
            item.setOption3(cursor.getString(7));
            item.setOption4(cursor.getString(8));
            item.setOption5(cursor.getString(9));
            item.setAnscount(cursor.getString(10));
            item.setTc(cursor.getString(11));
            quest.add(item);
        } while (cursor.moveToNext());
    }
    return quest;
}

public List<NotificationListItem> getPQuestions() {
    List<NotificationListItem> quest = new ArrayList<NotificationListItem>();
    String selectQuery = "SELECT  * FROM " + TABLE_NAME2;
    openToRead();
    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.moveToFirst()) {
        do {
            NotificationListItem pitem = new NotificationListItem();
            pitem.setqID(cursor.getInt(1));
            pitem.setAnswer(cursor.getString(2));
            pitem.setTestID(cursor.getString(3));
            pitem.setquestions(cursor.getString(4));
            pitem.setOption1(cursor.getString(5));
            pitem.setOption2(cursor.getString(6));
            pitem.setOption3(cursor.getString(7));
            pitem.setOption4(cursor.getString(8));
            pitem.setOption5(cursor.getString(9));
            pitem.setAnscount(cursor.getString(10));
            pitem.setTc(cursor.getString(11));
            quest.add(pitem);
        } while (cursor.moveToNext());
    }
    return quest;
}
public int getpreviousid() {
    int previd=0;
    openToRead();
    String selectQuery = "SELECT * FROM " + TABLE_NAME2;
    Cursor cursor=null;
    cursor = db.rawQuery(selectQuery, null);
    if (cursor != null && cursor.moveToPrevious()) {
        previd=cursor.getInt(cursor.getColumnIndex(KEY_QID));
    }
        cursor.close();
    return previd;
}


QUIZACTIVITY

NotificationListItem Nitem,Pitem;
List<NotificationListItem> Nquest,Pquest;
int score=0;
int qID=0,anscount,totalchoice,tq,questionid,previd;
QuizTable quizTable;
LinearLayout rc;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quiz_activity_b);

    qs = getIntent().getStringExtra("questions");
    tq = Integer.parseInt(qs);
    prevBT.setEnabled(false);
    quizTable = new QuizTable(this);
    quizTable.openToRead();
    quizTable.openToWrite();
    Nquest=quizTable.getNQuestions();
    Pquest=quizTable.getPQuestions();
    lastid=quizTable.getLastId();
    firstid=quizTable.getFirstId();
    previd=quizTable.getpreviousid();
    Nitem=Nquest.get(questionid);
    Pitem=Pquest.get(previd);

    setQuestionView();

    nextBT.setOnClickListener(new View.OnClickListener() {      
        @Override
        public void onClick(View v) {

            if(questionid<Integer.parseInt(lastid)){                    
                Nitem=Nquest.get(questionid);
                prevBT.setEnabled(true);
                setQuestionView();      
            }  
            else{  
                Intent intent = new Intent(QuizActivityB.this, TestAnalysisActivity.class);
                startActivity(intent);
                finish();
            }}
    });

    prevBT.setOnClickListener(new View.OnClickListener() {      
        @Override
        public void onClick(View v) {

            if(questionid<Integer.parseInt(lastid)){                    
                    Pitem=Pquest.get(previd);
                    questionid=previd;
                    setQuestionView1(); 

            }
            if(questionid==Integer.parseInt(lastid))
            {
                 Pitem=Pquest.get(previd);
                 questionid=previd;
                 setQuestionView1();    
            }
            }
    });
}

private void setQuestionView()
{

    txtQuestion.setText(Nitem.getquestions());

      op1=(Nitem.getOption1());
      op2=(Nitem.getOption2());
      op3=(Nitem.getOption3());
      op4=(Nitem.getOption4());
      op5=(Nitem.getOption5());
      ansc=Nitem.getAnscount();
      tc=(Nitem.getTc());
      questionid=(Nitem.getqID());
      if(questionid==Integer.parseInt(firstid))
        {
            prevBT.setEnabled(false);
        }
      totalchoice=Integer.parseInt(tc);
      anscount=Integer.parseInt(ansc);
      System.out.println("QUESTIONID="+questionid);

      if(anscount==1)
        {
        rc.removeAllViews();
        addRadioButtons();
        }
        else if(anscount>1)
        {
        rc.removeAllViews();
        addCheckButtons();
        }}

private void setQuestionView1() {
    // TODO Auto-generated method stub
    if(questionid==Integer.parseInt(firstid))
    {
        prevBT.setEnabled(false);
    }
    txtQuestion.setText(Pitem.getquestions());
      op1=(Pitem.getOption1());
      op2=(Pitem.getOption2());
      op3=(Pitem.getOption3());
      op4=(Pitem.getOption4());
      op5=(Pitem.getOption5());
      ansc=Pitem.getAnscount();
      tc=(Pitem.getTc());
      questionid=(Pitem.getqID());
      totalchoice=Integer.parseInt(tc);
      anscount=Integer.parseInt(ansc);
      System.out.println("PREVIOUSID="+ questionid);

      if(anscount==1)
        {
        rc.removeAllViews();
        addRadioButtons();
        }
        else if(anscount>1)
        {
        rc.removeAllViews();
        addCheckButtons();
        }
    }

We you press Next it means it is obvious to increment questionID hence :

 nextBT.setOnClickListener(new View.OnClickListener() {      
        @Override
        public void onClick(View v) {
            questionid++; // MISSING IN UR CODE
            if(questionid<Integer.parseInt(lastid)){                    
                Nitem=Nquest.get(questionid);
                prevBT.setEnabled(true);
                setQuestionView();      
            }  
            else{  
                Intent intent = new Intent(QuizActivityB.this, TestAnalysisActivity.class);
                startActivity(intent);
                finish();
            }}
    });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM