java - 仅显示 10 个 ImageView 中的 1 个 - Android

标签 java android imageview

我的代码的一部分是 ScrollView 中的 LinearLayoutScrollView 有 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

最佳答案

您应该实现一个 ListView 和一个适配器。正如您所看到的,管理手动将每一行添加到 ScrollView 并手动获取每个 ImageView 引用的代码非常痛苦。

请参阅Building Layouts with an Adapter

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

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

您的 for 循环仅访问索引 0。请尝试以下操作:

for (int i = 0; i < ivArray.size(); i++)

关于java - 仅显示 10 个 ImageView 中的 1 个 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14778417/

相关文章:

java - 奇怪的 Java 日历不一致

android - 在android 4.0或更高版本中,ANDROID_ID是完全唯一的吗?

java - 如何在android中读取XML数据

android - 在图像上写文字的最佳方式?

java - Collections.reverseOrder 如何知道在返回 Comparator<T> 时使用什么类型的参数

java - 由 : java. lang.NullPointerException 引起

android - 如何使用Databinding android更新editview中的ontextchanged的textview

java - 在 JavaFX 中将 ImageView 缩放到特定高度

android - Sprite 图像动画

java - 在java中打印垂直直方图时出现格式错误