10个ImageView中只有1个显示 - Android

时间:2013-02-08 17:49:47

标签: java android imageview

我的代码的一部分是LinearLayout中的ScrollViewScrollView有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);
            }
        }

enter image description here

2 个答案:

答案 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++)