Android Studio: ListView c фотографией и текстом
Задача: разместить в виджете ListView картинку из файла + текст. Результат должен выглядеть как то так:

Решение: будем писать свой «адаптер», на входе которого будет массив из id и photo_name (имя файла картинки)
Экран list_photos.xml:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent">     <ImageView         android:id="@+id/imgv"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_weight="1"         tools:srcCompat="@tools:sample/avatars" />     <TextView         android:id="@+id/photo_id"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_weight="1"         android:text="photo_id" />     <TextView         android:id="@+id/photo_name"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_weight="1"         android:text="photo_name" /> </LinearLayout> | 
Код адаптера:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |         ListView listView = findViewById(R.id.ListPhotos);         // используем адаптер данных         adapter=new PhotosAdapter(this,R.layout.list_photos, arrayList);         listView.setAdapter(adapter);     }     // Пишем свой класс-адаптер     private class PhotosAdapter extends ArrayAdapter<String> {         PhotosAdapter(Context context, int textViewResourceId, ArrayList objects) {             super(context, textViewResourceId, objects);         }         @NonNull         @Override         public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {             LayoutInflater inflater = getLayoutInflater();             View row = inflater.inflate(R.layout.list_photos, parent, false);             map=arrayList.get(position);             TextView pid = (TextView) row.findViewById(R.id.photo_id);             TextView pname = (TextView) row.findViewById(R.id.photo_name);             File imgFile = new  File(map.get("photo_name"));             pid.setText(map.get("photo_id"));             Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());             ImageView iconImageView = (ImageView) row.findViewById(R.id.imgv);             iconImageView.setImageBitmap(myBitmap);             return row;         }     } |