2

私はAndroidが初めてです。

配列リストの問題に直面しています。問題は、

私の配列は文字列配列リストです。私が必要なのは何ですか?2 つの配列リストがあります。QtnsArraylist1 には 4 つの要素 (4 つの質問) が含まれ、AnsArraylist2 には 16 の要素が含まれています (16 の回答、質問ごとに 4 つのオプション、合計 16 の要素)。QtnsArraylist1 の最初の質問では、AnsArraylist2 から最初の 4 つの要素を取得する必要があります。質問がある場合は次のボタンを押してください。どうすれば取得できますか? .

誰か助けてください。

前もって感謝します。

      D/TAG(910): 1
      D/TAG(910): 2
      D/TAG(910): 3
      D/TAG(910): 4
      D/TAG(910): 5
      D/TAG(910): 6
      D/TAG(910): 1
      D/TAG(910): 2
      D/TAG(910): 3
      D/TAG(910): 4
      D/TAG(910): 5
      D/TAG(910): 6
      D/TAG(910): 1
      D/TAG(910): 2
      D/TAG(910): 3
      D/TAG(910): 4
      D/TAG(910): 5
      D/TAG(910): 6
      D/TAG(910): 1
      D/TAG(910): 2
      D/TAG(910): 3
      D/TAG(910): 4
      D/TAG(910): 5
      D/TAG(910): 6
      D/TAG(910): 1
      D/TAG(910): 2
      D/TAG(910): 3
      D/TAG(910): 4
      D/TAG(910): 5
      D/TAG(910): 6
      D/AndroidRuntime(910): Shutting down VM
      W/dalvikvm(910): threadid=1: thread exiting with uncaught exception 
      (group=0x40015560)
      E/AndroidRuntime(910): FATAL EXCEPTION: main
      E/AndroidRuntime(910): java.lang.IndexOutOfBoundsException: Invalid index 16, size 
      is 16
      E/AndroidRuntime(910):    at 
      java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
      E/AndroidRuntime(910):    at java.util.ArrayList.get(ArrayList.java:311)

コード

     protected void onPostExecute(String file_url) {
        pDialog.dismiss();  
        for ( int i = 0,j = 0; i < ques1.size(); i++) {
            String s1 = ques1.get(i).toString();
            Log.d("TAG", "1");
            TextView txtque = (TextView) findViewById(R.id.que_txt); 
            txtque.setText(s1);
            Log.d("TAG", "2");
            btn_practicerg =(RadioGroup) findViewById(R.id.rdgroup);
            Log.d("TAG", "3");
            btn_practice1 = (RadioButton) findViewById(R.id.RB1);
            Log.d("TAG", "4");
            btn_practice2 = (RadioButton) findViewById(R.id.RB2);
            Log.d("TAG", "5");
            btn_practice3 = (RadioButton) findViewById(R.id.RB3);
            Log.d("TAG", "6");
            btn_practice4 = (RadioButton) findViewById(R.id.RB4);
            String s2 = answ1.get(j++);
            btn_practice1.setText(s2);
            String s3 = answ1.get(j++);
            btn_practice1.setText(s3);
            String s4 = answ1.get(j++);
            btn_practice1.setText(s4);
            String s5 = answ1.get(j++);   
            btn_practice1.setText(s5);
            //Display them
        }     
    }
4

2 に答える 2

1

あなたの問題が何であるかを正確に把握できませんでした。ArrayList1 の要素に続いて ArrayList2 の 4 つの要素を表示する場合は、非常に簡単です。

for ( int i = 0,j = 0; i < ArrayList1.size(); i++) {
    s1 = ArrayList1.get(i);
    s2 = ArrayList2.get(j++);
    s3 = ArrayList2.get(j++);
    s4 = ArrayList2.get(j++);
    s5 = ArrayList2.get(j++);   
    //Display them
}     

ご不明な点はお気軽にお尋ねください。

次のコードを試してください

Log.d("TAG", "onCreate() entered");
    setContentView(R.layout.activity_main);
    ArrayList<String> questionsList = new ArrayList<String>();
    ArrayList<String> answersList = new ArrayList<String>();

    //Initializing the arrayLists
    for (int index = 0; index < 4; index++) {
        questionsList.add("ques" + index + 1);
    }
    for (int index = 0; index < 16; index++) {
        answersList.add("ans" + index + 1);
    }

    //Output
    for (int questionIndex = 0, answerIndex = 0; questionIndex < questionsList.size(); questionIndex++) {
        Log.d("TAG", questionsList.get(questionIndex));

        Log.d("TAG", answersList.get(answerIndex++));
        Log.d("TAG", answersList.get(answerIndex++));
        Log.d("TAG", answersList.get(answerIndex++));
        Log.d("TAG", answersList.get(answerIndex++));

    }

radioBtn と textViews に設定するメソッドを追加しています。

レイアウト ファイル セット textView ids "@+id/questionView1" "@+id/questionView2" などで、radioBtns は

 "@+id/radioBtn1"
 "@+id/radioBtn2" 

などなど、16時まで

番組内

 for (int questionIndex = 0, answerIndex = 0; questionIndex < questionsList.size(); questionIndex++) {
        TextView tv = (TextView) findViewById(R.id.questionView + questionIndex + 1);
        tv.setText(questionsList.get(questionIndex));

        RadioButton rb1 = (RadioButton) findViewById(R.id.radioBtn + answerIndex + 1);
        rb1.setText(answersList.get(answerIndex++));

        RadioButton rb2 = (RadioButton) findViewById(R.id.radioBtn + answerIndex + 1);
        rb2.setText(answersList.get(answerIndex++));

        RadioButton rb3 = (RadioButton) findViewById(R.id.radioBtn + answerIndex + 1);
        rb3.setText(answersList.get(answerIndex++));

        RadioButton rb4 = (RadioButton) findViewById(R.id.radioBtn + answerIndex + 1);
        rb4.setText(answersList.get(answerIndex++));


    }
于 2013-01-24T05:43:53.730 に答える
1

次のようなことができます。

int j = 0;
for ( int i = 0; i < ArrayList1.size(); i++) {
    Log.d("ArrayList1", ArrayList1.get(i));
    Log.d("ArrayList2", ArrayList2.get(j));
    j++;
    Log.d("ArrayList2", ArrayList2.get(j));
    j++;
    Log.d("ArrayList2", ArrayList2.get(j));
    j++;
    Log.d("ArrayList2", ArrayList2.get(j));
    j++;
}
于 2013-01-24T05:49:27.533 に答える