

5 урок Андроид
Presentation
•
Education
•
University
•
Practice Problem
•
Hard
Еркебулан Жунусов
Used 1+ times
FREE Resource
10 Slides • 0 Questions
1
Практическая работа на тему Использование LayoutInflater для создания списка. Список - ListView. Одиночный и множественный выбор в ListView. События в ListView. Список-дерево ExpandableListView. События ExpandableListView.
Цель работы
Научиться использовать 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 listView: ListView = findViewById(R.id.listView)
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. Одиночный и множественный выбор в ListView. События в ListView. Список-дерево ExpandableListView. События ExpandableListView.
Цель работы
Научиться использовать LayoutInflater для создания списка в ListView, а также работать с одиночным и множественным выбором элементов. Ознакомиться с использованием ExpandableListView для создания древовидного списка.
Show answer
Auto Play
Slide 1 / 10
SLIDE
Similar Resources on Wayground
11 questions
BEGINNERS GRAMMAR
Presentation
•
University
7 questions
Общение по ситуации
Presentation
•
University
8 questions
How organized are you?
Presentation
•
University
6 questions
English prepositions lesson
Presentation
•
University
8 questions
Costas level of thinking
Presentation
•
University
6 questions
quiz
Presentation
•
University
7 questions
Costing_Recap
Presentation
•
University
6 questions
Week 3 CAD 154
Presentation
•
University
Popular Resources on Wayground
6 questions
Secondary Safety Quiz
Presentation
•
9th - 12th Grade
10 questions
MyPath Diagnostic Overview
Presentation
•
6th - 8th Grade
20 questions
Lab Safety Quiz
Quiz
•
6th Grade
21 questions
Continents and Oceans
Quiz
•
6th Grade
20 questions
Adding and Subtracting Decimals
Quiz
•
5th Grade
20 questions
Parts of Speech
Quiz
•
5th Grade
16 questions
Subject & Predicate
Quiz
•
5th Grade
21 questions
Lab Safety
Quiz
•
10th Grade
Discover more resources for Education
20 questions
Disney Trivia
Quiz
•
University
20 questions
Brand Trivia
Quiz
•
9th Grade - University
10 questions
Would you rather...
Quiz
•
KG - University
21 questions
Mapa países hispanohablantes
Quiz
•
1st Grade - University
10 questions
Spanish Greetings and Goodbyes!
Presentation
•
6th Grade - University
12 questions
CE 2b Early Documents Review
Quiz
•
7th Grade - University
30 questions
Multiplying and Dividing Integers
Quiz
•
6th Grade - University
13 questions
Back to School
Quiz
•
KG - University