39
image.setImageResource(R.drawable.image4);
break
;
}
Теперь осталось поместить любые изображения в папку drawable.
Изображения либо должны называться image1.jpeg, image2.jpeg и т.д., либо в
конструкции switch-case необходимо поменять
путь до картинок в строке
R.drawable.image1 и т.д. Не забудьте про текстовое поле с ФИО. Запустите
приложение и увидите собственный список с картинкой и текстом. Пример
показан на рисунке 26.
Рисунок 26 – Пример выполнения лабораторной работы №5
40
Теперь рассмотрим более мощный и
современный элемент
RecyclerView
1
. Этот элемент создаёт ровно столько элементов списка,
сколько видно на экране пользователю, поэтому он
значительно экономит
память, если список большой – а в приложениях списки, как правило,
длинные. Когда пользователь
прокручивает список вниз, верхний элемент
уходит за пределы экрана и становится невидимым, при этом его содержимое
очищается, а сам этот более ненужный на экране
элемент помещается вниз
экрана и заполняется новыми данными следующих элементов списка, т.е.
переиспользуется (is being
recycled). Общая модеь работы RecyclerView
изображена ниже.
Рисунок 26.2 – Модель работы RecyclerView
2
1
https://metanit.com/java/android/5.11.php
2
http://developer.alexanderklimov.ru/android/views/recyclerview-kot.php
41
Создадим новый проект с EmptyActivity. Первое, что нужно сделать –
это добавить следующую зависимость в gradle-файл уровня модуля:
implementation 'androidx.recyclerview:recyclerview:1.2.1'
Далее нужно построить макет для отдельного элемента списка, но он у
нас уже есть в проекте с ListView и лежит в файле list_item.xml:
xml
version
="1.0"
encoding
="utf-8"
?>
<
androidx.constraintlayout.widget.ConstraintLayout
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"
tools
:context
=".MainActivity"
>
<
ImageView
android
:id
="@+id/imageView"
android
:layout_width
="wrap_content"
android
:layout_height
="wrap_content"
android
:layout_marginStart
="16dp"
android
:layout_marginLeft
="16dp"
android
:layout_marginTop
="16dp"
app
:layout_constraintStart_toStartOf
="parent"
app
:layout_constraintTop_toTopOf
="parent"
app
:srcCompat
="@mipmap/ic_launcher"
/>
<
TextView
android
:id
="@+id/textView"
android
:layout_width
="wrap_content"
android
:layout_height
="wrap_content"
android
:layout_marginStart
="8dp"
android
:layout_marginLeft
="8dp"
android
:layout_marginEnd
="8dp"
android
:layout_marginRight
="8dp"
android
:text
="TextView"
android
:textSize
="24sp"
app
:layout_constraintBottom_toBottomOf
="@+id/imageView"
app
:layout_constraintEnd_toEndOf
="parent"
app
:layout_constraintHorizontal_bias
="0.077"
app
:layout_constraintStart_toEndOf
="@+id/imageView"
app
:layout_constraintTop_toTopOf
="@+id/imageView"
/>
androidx.constraintlayout.widget.ConstraintLayout
>
Также нам понадобится файл images.xml в папке res/values,
содержащий названия картинок, и сами эти картинки в папке drawable.
Теперь удалим TextView "Hello world" и добавим компонент RecyclerView в
activity_main.xml. Чтобы видеть дизайн элемента списка,
который мы
42
создали в list_item.xml, добавим значение @layout/list_item в свойство
RecyclerView под названием listitem. Кроме того, нужно добавить следующее
свойство в код описания RecyclerView:
app
:layoutManager
="androidx.recyclerview.widget.LinearLayoutManager"
Это нужно для того, чтобы RecyclerView знал, как отображать список.
Оптимизируем наш предыдущий проект: создадим 2 дополнительных класса,
осблуживающих RecyclerView. Первый класс назовём Image, он будет
содержать основные методы для задания
необходимых данных элемента
списка:
public class
Image
{
private
String
name
;
Достарыңызбен бөлісу: