ListView показывает ТОЛЬКО одно изображение для каждого элемента

#android #listview #android-listview #imageview

#Android #listview #android-listview #imageview

Вопрос:

У меня есть ListView, который содержит 4 ImageView, но после установки адаптера с помощью $ ImageView я получаю только первый ImageView.

Адаптер ListView:

 public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null) {
        vi = inflater.inflate(R.layout.onlyimageproductlist, null);
        options = new BitmapFactory.Options();
        options.inSampleSize = 3;
    }

    ImageView thumb_image1 = (ImageView) vi
            .findViewById(R.id.imageview_only_thumbnail_1); // thumb image
    ImageView thumb_image2 = (ImageView) vi
            .findViewById(R.id.imageview_only_thumbnail_2); // thumb image
    ImageView thumb_image3 = (ImageView) vi
            .findViewById(R.id.imageview_only_thumbnail_3); // thumb image
    ImageView thumb_image4 = (ImageView) vi
            .findViewById(R.id.imageview_only_thumbnail_4); // thumb image
    //building the uris...

    if (uris1 == null) {
        thumb_image1.setImageResource(R.drawable.noimage);
    } else {
        String[] path = uris1.split("file://");
        Bitmap map = BitmapFactory.decodeFile(path[1], options);
        thumb_image1.setImageBitmap(map);
    }

            //same process for image 2,3,4

        return vi;
}
  

Мой макет :

 <LinearLayout
        android:id="@ id/ll_for_thumbnail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:orientation="horizontal"
        android:layout_marginRight="2dp" >

            <ImageView
            android:id="@ id/imageview_only_thumbnail_1"
            android:layout_width="120dp"
            android:layout_height="90dp"
            android:padding="5dp" />

            <ImageView
            android:id="@ id/imageview_only_thumbnail_2"
            android:layout_width="120dp"
            android:layout_height="90dp"
            android:padding="5dp" />


            <ImageView
            android:id="@ id/imageview_only_thumbnail_3"
            android:layout_width="120dp"
            android:layout_height="90dp"
            android:padding="5dp" />

            <ImageView
            android:id="@ id/imageview_only_thumbnail_4"
            android:layout_width="120dp"
            android:layout_height="90dp"
            android:padding="5dp" />

    </LinearLayout>        
  

Я проверил URI, и все они относятся к изображению. в противном случае я покажу изображение по умолчанию. но все же я не получаю ни одного из них, кроме первого большого пальца, где я получаю изображение ИЛИ изображение по умолчанию.

Комментарии:

1. Когда вы говорите //same process for image 2,3,4 , убедились ли вы, что не допустили ошибку копирования / вставки и неоднократно устанавливали thumb_image1.setImageBitmap(map); несколько раз, а не thumb_image2.setImageBitmap(map); , thumb_image3.setImageBitmap(map); и т. Д

2. @FunkTheMonk Я дважды проверил привязку между представлением и ресурсом, а также для setImage. Кажется, все В порядке. И AFAIK, мы можем делать все, что захотим, с элементами ListView, верно?

3. сможете ли вы опубликовать полный адаптер getView ()?

Ответ №1:

Согласно вашим словам, вы все делаете правильно в программировании, тогда я предлагаю вам проверить ваш файл макета, как указано ниже. используйте параметр weight, чтобы все изображения имели одинаковое соотношение в пространстве.

 <LinearLayout
        android:id="@ id/ll_for_thumbnail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="3dp"
        android:orientation="horizontal"
        android:layout_marginRight="2dp" >

            <ImageView
            android:id="@ id/imageview_only_thumbnail_1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="90dp"
            android:padding="5dp" />

            <ImageView
            android:id="@ id/imageview_only_thumbnail_2"
             android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="90dp"
            android:padding="5dp" />


            <ImageView
            android:id="@ id/imageview_only_thumbnail_3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="90dp"
            android:padding="5dp" />

            <ImageView
            android:id="@ id/imageview_only_thumbnail_4"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="90dp"
            android:padding="5dp" />

    </LinearLayout>        
  

Комментарии:

1. Я уже делал это, и это не сработало> Но по какой-то причине теперь это работает. Дело в том, что я мог видеть свои 4 изображения (в графическом редакторе) без веса, но во время выполнения я получаю только первое. В любом случае спасибо за ваш быстрый ответ. ТЕПЕРЬ ЭТО РАБОТАЕТ

2. Тогда, если это полезно, пожалуйста, примите и проголосуйте, чтобы другие люди могли воспользоваться этим