0

我的代码的一部分是LinearLayoutScrollView. 有ScrollView10 行,每行 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);
            }
        }

在此处输入图像描述

4

2 回答 2

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),看看它是否会变得更好。

于 2013-02-08T17:56:17.437 回答
3

您应该实现 ListView 和 Adapter。如您所见,管理手动将每一行添加到 ScrollView 并手动获取每个 ImageView 引用的代码很痛苦。

请参阅使用适配器构建布局

请发布您的任何问题,我很乐意扩展我的答案。

现在,更直接地回答你的问题......

你的 for 循环只访问索引 0。试试这个:

for (int i = 0; i < ivArray.size(); i++)
于 2013-02-08T17:56:42.367 回答