1

「TABLE_EXAM」と「TABLE_QUESTION」の2つのテーブルがあります。次のコードを使用してレコードを取得し
ましたが、1 つのレコードしか表示されません。次へボタンをクリックした後、すべてのレコードを1つずつ表示する必要があり ます。参考またはヒントを教えてください。
[次へ] ボタンをクリックしてレコードを 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;
}

どうやってするか?

4

4 に答える 4

3

ボタンをクリックすると、ハンドルcursorの位置がそれだけです。

組み込みのカーソルには、その位置を移動する機能があります。あなたは、、、、をmoveNext()持っ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();
        }

    }
});
于 2012-04-06T11:39:49.123 に答える
1

最後に答えが得られました...レコード数を数え、1ずつデクリメントするだけです。10レコードある場合は、counter = 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;
}
于 2012-04-21T09:09:42.197 に答える
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;
    }

そして今受信終了のように受信

  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; 

}
}
于 2012-04-06T12:43:23.163 に答える