我是Android新手。
我遇到阵列列表问题。问题是,
我的数组是字符串数组列表。 我需要的是什么?我有两个数组列表。 QtnsArraylist1包含4个元素(4个问题),AnsArraylist2包含16个元素(16个答案,每个问题4个选项共16个元素)。对于我在QtnsArraylist1中的第一个问题,我必须从AnsArraylist2获得前4个元素。类似于2,3,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
}
}
答案 0 :(得分:1)
我无法确切地知道你的问题是什么。如果要显示ArrayList1中的元素,后跟4个ArrayList2元素,那么它非常简单。
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++));
}
答案 1 :(得分: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++;
}