

5 урок Андроид
Presentation
•
Education
•
University
•
Practice Problem
•
Hard
Еркебулан Жунусов
Used 1+ times
FREE Resource
10 Slides • 0 Questions
1
Цель работы
Научиться использовать LayoutInflater для создания списка в ListView, а также работать с одиночным и множественным выбором элементов. Ознакомиться с использованием ExpandableListView для создания древовидного списка.
2
Разметка activity_main.xml
LinearLayout – это контейнер для размещения элементов в линейном порядке (по вертикали или горизонтали).
xmlns:android="http://schemas.android.com/apk/res/android" – это пространство имен, необходимое для использования стандартных атрибутов Android в XML.
android:layout_width="match_parent" – контейнер будет занимать всю ширину экрана.
android:layout_height="match_parent" – контейнер займет всю высоту экрана.
android:orientation="vertical" – элементы внутри LinearLayout будут расположены вертикально.
3
Этот код создает экран, на котором есть вертикальный контейнер LinearLayout, содержащий ListView. ListView позволяет пользователю выбирать один элемент, что полезно для списков с выбором (например, настройка режима приложения). 🚀
ListView – это виджет для отображения списка элементов, например, списка имен или товаров.
android:id="@+id/listView" – идентификатор списка, по которому мы можем обращаться к нему в коде Kotlin.
android:layout_width="match_parent" – ListView займет всю ширину экрана.
android:layout_height="wrap_content" – высота списка будет зависеть от его содержимого.
android:choiceMode="singleChoice" – позволяет выбирать только один элемент списка (используется, например, в радиокнопках).
4
Создание адаптера ListView
Создадим list_item.xml для элементов списка:
TextView — это стандартный виджет Android, который используется для отображения текста на экране.
xmlns:android="http://schemas.android.com/apk/res/android" — это пространство имен XML, необходимое для корректной работы атрибутов android:.
layout_width="match_parent" — ширина TextView будет равна ширине родительского контейнера.
layout_height="wrap_content" — высота TextView будет автоматически подстраиваться под его содержимое.
padding="16dp" — задает отступы внутри TextView, чтобы текст не прилипал к краям.
textSize="18sp" — размер текста составляет 18 SP (Scale-independent Pixels), что учитывает настройки размера шрифта в системе.
id="@+id/textItem" — задает уникальный идентификатор textItem, по которому можно обращаться к этому TextView в коде на Java/Kotlin.
5
Класс адаптера MyAdapter.kt:
MyAdapter наследуется от ArrayAdapter<String>, который является стандартным адаптером для работы со списками строк.
В конструктор передаются:
context — контекст приложения или активности.
items — список строк, которые нужно отобразить.
Вызов конструктора ArrayAdapter<String>(context, R.layout.list_item, items) передает в него макет R.layout.list_item, который будет использоваться для каждого элемента списка.
6
val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.list_item, parent, false)
Если convertView не равен null, то используется старая View, иначе создается новая из R.layout.list_item с помощью LayoutInflater.
7
return view
Возвращаем View, которая будет отображаться в ListView.
8
val items = listOf("Элемент 1", "Элемент 2", "Элемент 3", "Элемент 4")
val adapter = MyAdapter(this, items)
listView.adapter = adapter
listView.setOnItemClickListener { , , position, _ ->
Toast.makeText(this, "Вы выбрали: ${items[position]}", Toast.LENGTH_SHORT).show()
Настройка ListView в MainActivity
9
10
class ExpandableListAdapter(private val context: Context, private val header: List<String>, private val body: HashMap<String, List<String>>) : BaseExpandableListAdapter() {
override fun getGroupCount() = header.size
override fun getChildrenCount(groupPosition: Int) = body[header[groupPosition]]!!.size
override fun getGroup(groupPosition: Int) = header[groupPosition]
override fun getChild(groupPosition: Int, childPosition: Int) = body[header[groupPosition]]!![childPosition]
override fun getGroupId(groupPosition: Int) = groupPosition.toLong()
override fun getChildId(groupPosition: Int, childPosition: Int) = childPosition.toLong()
override fun hasStableIds() = false
override fun getGroupView(groupPosition: Int, isExpanded: Boolean, convertView: View?, parent: ViewGroup?): View {
val view = convertView ?: LayoutInflater.from(context).inflate(android.R.layout.simple_expandable_list_item_1, parent, false)
val textView = view.findViewById<TextView>(android.R.id.text1)
textView.text = getGroup(groupPosition) as String
return view
}
override fun getChildView(groupPosition: Int, childPosition: Int, isLastChild: Boolean, convertView: View?, parent: ViewGroup?): View {
val view = convertView ?: LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, parent, false)
val textView = view.findViewById<TextView>(android.R.id.text1)
textView.text = getChild(groupPosition, childPosition) as String
return view
}
override fun isChildSelectable(groupPosition: Int, childPosition: Int) = true
}
Цель работы
Научиться использовать LayoutInflater для создания списка в ListView, а также работать с одиночным и множественным выбором элементов. Ознакомиться с использованием ExpandableListView для создания древовидного списка.
Show answer
Auto Play
Slide 1 / 10
SLIDE
Similar Resources on Wayground
8 questions
comp. accounting class 20
Presentation
•
University
7 questions
Screwtape Letters 17-31
Presentation
•
University
5 questions
Translanguaging
Presentation
•
University
6 questions
SQL SELECT Statement 2
Presentation
•
University
6 questions
Science and Technologies
Presentation
•
University
8 questions
Principle of accounting
Presentation
•
University
8 questions
Writing a Cover Letter
Presentation
•
University
9 questions
Enseñanza en aulas diversas
Presentation
•
Professional Development
Popular Resources on Wayground
10 questions
Safety Day 2026 – Student Review
Quiz
•
9th Grade
21 questions
Continents and Oceans
Quiz
•
6th Grade
20 questions
Parts of Speech
Quiz
•
5th Grade
16 questions
Subject & Predicate
Quiz
•
5th Grade
25 questions
Multiplication Facts
Quiz
•
5th Grade
12 questions
Map Skills
Quiz
•
3rd Grade
22 questions
Continents and Oceans
Quiz
•
5th Grade
15 questions
Rounding Decimals
Quiz
•
5th Grade