2012-04-06 22 views
1

私は2つのテーブル "TABLE_EXAM"と "TABLE_QUESTION"を持っています。次のコード
を使用してレコードをフェッチしますが、レコードは1つしか表示されません。 次をクリックした後に、すべてのレコードを1つずつ表示する必要があります。 button.Pleaseを参考にしてください。
[次へ]ボタンをクリックしてレコードを1つずつフェッチする方法がわかりません。
ありがとうございました。sqliteからレコードを1つずつ取得する方法は?

AppearingExamActivity.java

db=new MySQLiteHelper(getBaseContext()); 
     db.getWritableDatabase(); 
     examId=db.getExamId(profile); 

     final List<ObjectiveWiseQuestion> QuestionWiseProfile= db.getOneQuestion(examId);  

     for (final ObjectiveWiseQuestion cn : QuestionWiseProfile) 
     { 
      db=new MySQLiteHelper(getBaseContext()); 
      db.getWritableDatabase(); 

      //db.close(); 
      txtQuestion.setText(cn.getQuestion()); 
      optionA.setText(cn.getOptionA()); 
      optionB.setText(cn.getOptionB()); 
      optionC.setText(cn.getOptionC()); 
      optionD.setText(cn.getOptionD()); 
      correctOption=cn.getCorrectOption(); 

     } 

    } 
    btnNext.setOnClickListener(new View.OnClickListener() 
    {   
     @Override 
     public void onClick(View v) 
     { 
      try 
      { 
       db=new MySQLiteHelper(getBaseContext()); 
       db.getWritableDatabase(); 
       owq.getCorrectAnswer(); 
       owq.setExamId(examId); 
       //owq.getExamId(); 
       owq.getQuestionId(); 
       db.addResultDetails(owq); 
       db.close(); 

      } 
      catch(Exception e) 
      { 
       e.printStackTrace(); 
      } 

     } 
    }); 

MySQLiteHelper.java

public List<ObjectiveWiseQuestion> getOneQuestion(int examId) 
{ 
    // long index = 0; 
    List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>(); 
    db = getReadableDatabase(); 


    String selectQuery=("select * from question where exam_id ='"+ examId +"'"); 
     Cursor cursor = db.rawQuery(selectQuery, null); 


    if (cursor.moveToFirst()) 
    { 
     do { 
      ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion(); 

      owq.setQuestionId(cursor.getInt(0)); 
      owq.setExamId(cursor.getInt(1)); 
      owq.setQuestion(cursor.getString(2)); 
      owq.setOptionA(cursor.getString(3)); 
      owq.setOptionB(cursor.getString(4)); 
      owq.setOptionC(cursor.getString(5)); 
      owq.setOptionD(cursor.getString(6)); 
      owq.setCorrectOption(cursor.getString(7)); 

      LocwiseProfileList.add(owq); 
     } while(cursor.moveToNext()); 
     db.close(); 

    } 


    return LocwiseProfileList; 
} 

それをどのように行うには?

答えて

1

...私は、レコードの数をカウントし、私は10のレコードを持っている場合のみ1で、それをデクリメントのように、私は設定カウンタ= 10と次のクリックごとに1ずつ減らしてください。
ここは私を助ける簡単な機能です。

public List<ObjectiveWiseQuestion> getOneByOneQuestion(int examId, int questionId) 
{  
    List<ObjectiveWiseQuestion>LocwiseProfileList=new ArrayList<ObjectiveWiseQuestion>(); 
    db = getWritableDatabase(); 

    String selectQuery=("select * from question where exam_id ='" + examId + "' and question_id ='" + questionId +"'"); 
     Cursor cursor = db.rawQuery(selectQuery, null); 


    if (cursor.moveToFirst()) 
    { 
     do { 
      ObjectiveWiseQuestion owq= new ObjectiveWiseQuestion(); 

      owq.setQuestionId(cursor.getInt(0)); 
      owq.setExamId(cursor.getInt(1)); 
      owq.setQuestion(cursor.getString(2)); 
      owq.setOptionA(cursor.getString(3)); 
      owq.setOptionB(cursor.getString(4)); 
      owq.setOptionC(cursor.getString(5)); 
      owq.setOptionD(cursor.getString(6)); 
      owq.setCorrectOption(cursor.getString(7)); 

      LocwiseProfileList.add(owq); 
     } while(cursor.moveToNext()); 
     cursor.moveToFirst(); 
     db.close(); 

    } 


    return LocwiseProfileList; 
} 
3

ボタンをクリックするだけで、cursorの位置が表示されます。

カーソルinbuiltは、その位置を移動する機能を持っています。 、movePrevious()moveToPosition()moveToFirst()moveToLast()です。この他にも、合計レコード数を示すgetCount()があります。

http://developer.android.com/reference/android/database/Cursor.html

String selectQuery=("select * from question where exam_id ='"+ examId +"'"); 
     Cursor cursor = db.rawQuery(selectQuery, null); 

btnNext.setOnClickListener(new View.OnClickListener() 
    {   
     @Override 
     public void onClick(View v) 
     { 
      try 
      { 
       cursor.moveNext(); 
       //show on UI with cursor value 
      } 

     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

    } 
}); 
2

これは、あなたのjavaファイルに記述する必要がコードです。

Cursor mCursor=null; 
mCursor = DatabaseObject.getDefault(); // 
if (mCursor.getCount() >= 1) { 
       mCursor.moveToFirst(); 
       try { 
        for (int i = 0; i < mCursor.getCount(); i++) { 
         profileName.setText(mCursor.getString(0).toString()); // You can Do your work Here 
         firstName.setText(mCursor.getString(1).toString()); 
         lastName.setText(mCursor.getString(2).toString()); 
         email.setText(mCursor.getString(3).toString()); 

        } 
      } 
} 

これは、データベース

public Cursor getDefault() throws SQLException { 

    String getRT = "SELECT * from "+ PROFILE_TABLE+";"; 
    Cursor mCur = sqldb.rawQuery(getRT, null); 
    return mCur; 
} 
1

public Cursor Value_Of_Data(String string) throws SQLException { 
     // TODO Auto-generated method stub 


     Cursor mCursor = db.query(Normal_Scoring, 
        new String[] { 
Columns1,Columns2,Columns3,Columns4,Columns5,Columns1 
}, 
        Game_Date +"<='" + string + "'", 
        null,null,null,null,null); 





     if (mCursor != null) 
     { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 
    } 

そして今、端部を受け入れるように最初の火災クエリの機能である

0123のようなカウンタを初期化

ArrayList<String> row1 = new ArrayList<String>(); 

      ArrayList<String> row2 = new ArrayList<String>(); 

      ArrayList<String> row3 = new ArrayList<String>(); 

      ArrayList<String> row4 = new ArrayList<String>(); 

      ArrayList<String> row5 = new ArrayList<String>(); 

      ArrayList<String> row6 = new ArrayList<String>(); 




    try{ 
      cursor1 = db.Nomal_Score_Data(dateFormat.format(dateis)); 
      cursor1.moveToFirst(); 
      startManagingCursor(cursor1); 

      for(int i=0;i<cursor1.getCount();i++){ 


      String rec1 = cursor1.getString(cursor1.getColumnIndex 
           ("Columns1")); 



      String rec2 = cursor1.getString(cursor1.getColumnIndex 
       ("Columns2")); 



      String rec3 = cursor1.getString(cursor1.getColumnIndex 
       ("Columns3")); 



      String rec4 = cursor1.getString(cursor1.getColumnIndex 
       ("Columns4")); 


      String rec5 = cursor1.getString(cursor1.getColumnIndex 
        ("Columns5")); 




      String rec6 = cursor1.getString(cursor1.getColumnIndex 
         ("Columns6")); 


      row1.add(rec1); 

     row12.add(rec2); 

      row3.add(rec3); 

     row4.add(rec4); 

     row5.add(rec5); 

      row6.add(rec6); 

} 
     catch(Exception e) 
     { 
      Log.e("ERROR OF FETCHING ", e.toString()); 
      e.printStackTrace(); 

     } 

のように受け取ります

int count = 0 ; 

と、ボタンのクリック、表示上の最後に、私は答えを得た

@Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 



     switch(v.getId()) 
     { 
     case R.id.goNext : 



      // display 


     text1.setText(row1.get(count)); 
     text2.setText(row2.get(count)); 
     text3.setText(row3.get(count)); 
     text4.setText(row4.get(count)); 
     text5.setText(row5.get(count)); 
     text6.setText(row6.get(count)); 

    count++; 


      } 

        break; 

case R.id.goPrev : 

      Toast.makeText(this, "Button Clicked goPrev", 
        Toast.LENGTH_LONG).show(); 



     text1.setText(row1.get(count)); 
     text2.setText(row2.get(count)); 
     text3.setText(row3.get(count)); 
     text4.setText(row4.get(count)); 
     text5.setText(row5.get(count)); 
     text6.setText(row6.get(count)); 


     count--; 



        break; 

} 
} 
関連する問題