#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. Тогда, если это полезно, пожалуйста, примите и проголосуйте, чтобы другие люди могли воспользоваться этим