我的代码的一部分是LinearLayout
中的ScrollView
。 ScrollView
有10行,每行有4列。第一列是小ImageView
(红色'x'或绿色复选标记)。从下图中,由于某种原因,只显示第一个ImageView
。我希望在第一列中为每一行显示一个。
以下是XML代码:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="65"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/q1Image"
android:layout_width="10dp"
android:layout_height="10dp" />
<TextView
android:id="@+id/q1Question"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="48"
android:paddingLeft="5dp"
android:paddingBottom="6dp" />
<TextView
android:id="@+id/q1Answer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="27"
android:paddingBottom="6dp" />
<TextView
android:id="@+id/q1Verse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="25"
android:paddingBottom="6dp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#C2BEBF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/q2Image"
android:layout_width="10dp"
android:layout_height="10dp" />
<TextView
android:id="@+id/q2Question"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="48"
android:paddingLeft="5dp"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q2Answer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="27"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q2Verse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="25"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#C2BEBF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/q3Image"
android:layout_width="10dp"
android:layout_height="10dp" />
<TextView
android:id="@+id/q3Question"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="48"
android:paddingLeft="5dp"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q3Answer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="27"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q3Verse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="25"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
</LinearLayout>
Java代码
ImageView q1Image = (ImageView)findViewById(R.id.q1Image);
q1Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q2Image = (ImageView)findViewById(R.id.q2Image);
q2Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q3Image = (ImageView)findViewById(R.id.q3Image);
q3Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q4Image = (ImageView)findViewById(R.id.q4Image);
q4Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q5Image = (ImageView)findViewById(R.id.q5Image);
q5Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q6Image = (ImageView)findViewById(R.id.q6Image);
q6Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q7Image = (ImageView)findViewById(R.id.q7Image);
q7Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q8Image = (ImageView)findViewById(R.id.q8Image);
q8Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q9Image = (ImageView)findViewById(R.id.q9Image);
q9Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ImageView q10Image = (ImageView)findViewById(R.id.q10Image);
q10Image.setScaleType(ImageView.ScaleType.FIT_CENTER);
ArrayList<ImageView> ivArray = new ArrayList<ImageView>(10);
ivArray.add(q1Image);
ivArray.add(q2Image);
ivArray.add(q3Image);
ivArray.add(q4Image);
ivArray.add(q5Image);
ivArray.add(q6Image);
ivArray.add(q7Image);
ivArray.add(q8Image);
ivArray.add(q9Image);
ivArray.add(q10Image);
for(int i = 0; i < 1; i++) {
if(qs.get(i).getSelectedAnswer() == qs.get(i).getCorrectAnswer()) {
ivArray.get(i).setBackgroundResource(R.drawable.green_check_mark);
} else {
ivArray.get(i).setBackgroundResource(R.drawable.red_x);
}
}
答案 0 :(得分:3)
以下是Java代码中的错误:
for(int i = 0; i < 1; i++) {
if(qs.get(i).getSelectedAnswer() == qs.get(i).getCorrectAnswer()) {
vArray.get(i).setBackgroundResource(R.drawable.green_check_mark);
}
// ....
你的循环停在1 (i < 1)
。尝试将其更改为(i < 10)
,看看它是否会变好。
答案 1 :(得分:3)
您应该实现ListView和适配器。正如您所看到的,管理手动将每行添加到ScrollView并手动获取每个ImageView参考的代码都很痛苦。
请参阅Building Layouts with an Adapter
请发布您的任何问题,我很乐意扩大我的答案。
现在,更直接地回答你的问题......
你的for循环只访问索引0.试试这个:
for (int i = 0; i < ivArray.size(); i++)