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

Метод notifyDataSetChanged

Метод notifyDataSetChanged у RecyclerView.Adapter говорит списку, что данные изменились и нужно снова вызвать onBindViewHolder. Вызывают после смены списка или когда изменился getItemCount. Для точечных обновлений есть notifyItem*, их отдельно не разбирают.

Синтаксис

adapter.notifyDataSetChanged()

Пример

Давайте добавим строку и обновим список:

import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView class MainActivity : AppCompatActivity() { private val items = mutableListOf("abcde") private lateinit var adapter: LineAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) adapter = LineAdapter(items) val list = findViewById<RecyclerView>(R.id.list) list.layoutManager = LinearLayoutManager(this) list.adapter = adapter findViewById<Button>(R.id.action).setOnClickListener { items.add("12345") adapter.notifyDataSetChanged() } } } 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 }

На экране после нажатия на кнопку в списке появится вторая строка "12345".

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

  • метод getItemCount,
    который меняется вместе с данными
  • метод onBindViewHolder,
    который RecyclerView вызывает снова
  • класс RecyclerView,
    который перерисовывает видимые пункты
  • класс Adapter,
    на котором вызывают notifyDataSetChanged
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить