Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
368 of 502 menu
◀ ▶

Класс RecyclerView

Класс RecyclerView показывает прокручиваемый список и создаёт только видимые пункты. Данные и разметку пункта задаёт Adapter, наследник RecyclerView.Adapter. Направление списка задаёт setLayoutManager с LinearLayoutManager или GridLayoutManager. Adapter передают через setAdapter.

Синтаксис

<androidx.recyclerview.widget.RecyclerView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" />

Параметры

Параметр Описание
android:id Id списка для findViewById.
android:layout_width Ширина области списка.
android:layout_height Высота области списка.
android:clipToPadding Обрезает ли список содержимое по padding.
android:padding Отступы вокруг пунктов списка.

Методы

Метод Описание
setAdapter Подключает adapter с данными пунктов.
setLayoutManager Задаёт схему: столбец, ряд или сетка.

Пример

Давайте займём RecyclerView весь экран:

<androidx.recyclerview.widget.RecyclerView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp" />

На экране появится пустая область списка, пока из кода не вызовут setAdapter.

Пример

Давайте подключим adapter и LinearLayoutManager:

import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val list = findViewById<RecyclerView>(R.id.list) list.layoutManager = LinearLayoutManager(this) list.adapter = LineAdapter(listOf("abcde", "12345")) } } class LineAdapter(private val items: List<String>) : RecyclerView.Adapter<LineAdapter.Holder>() { class Holder(view: View) : RecyclerView.ViewHolder(view) { val label: TextView = view.findViewById(R.id.label) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_line, parent, false) return Holder(view) } override fun onBindViewHolder(holder: Holder, position: Int) { holder.label.text = items[position] } override fun getItemCount(): Int = items.size }

На экране в столбец появятся две строки "abcde" и "12345".

Смотрите также

  • класс Adapter,
    который наполняет RecyclerView
  • класс ViewHolder,
    который держит View одного пункта
  • класс LinearLayoutManager,
    вертикальный или горизонтальный список
  • класс LayoutInflater,
    который раздувает item_line.xml для пункта
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить