@UBERS

Почему даже при самом простом RecyclerViewAdapter лагает?

Ранее у меня был очень нагруженный RecyclerView, и я предполагал, что он лагает именно из-за большого количества слушателей и функций. Но я переписал его код на самый простой пример адаптера для того, чтобы проверить в чем дело, вот его код:
package com.example.myapplication1.db

import android.util.Log
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.example.myapplication1.Entities.ItemsList
import com.example.myapplication1.databinding.ListItemBinding

class RecyclerViewAdapter : RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {

    var transactions: List<ItemsList> = emptyList()
        set(newValue) {
            field = newValue
            notifyDataSetChanged()
        }

    class ViewHolder(val binding: ListItemBinding) : RecyclerView.ViewHolder(binding.root) {

    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val inflater = LayoutInflater.from(parent.context)
        val binding = ListItemBinding.inflate(inflater, parent, false)
        return ViewHolder(binding)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val transaction = transactions[position]
        with(holder.binding) {
            tvPurchaseTitle.text = transaction.purchaseName
            tvDescription.text = transaction.description
            tvAmount.text = transaction.amount.toString()
            tvCategoryTitle.text = transaction.categoryName

        }
    }
    override fun getItemCount(): Int = transactions.size
}

Но это не помогло... При открытии фрагмента - он все равно подлагивает, может решением будет создать некий загрузочный экран как во многих приложениях и по готовности RecyclerView - отобразить данные? Но я в интернете не нашел ни одного примера такого использования.

Логика открытия фрагмента такова:
Нажатие на кнопку открытия фрагмента в BottomNavigationView --> Открытие фрагмента, который сразу же инициализирует RecyclerViewAdapter с данными (именно здесь происходит подлагивание, которое полностью "съедает" все анимации открытия вместе с впечатлением от приложения). Пожалуйста помогите, я никак не могу найти решение этого вопроса и искренне не понимаю, почему такая реализация лагает при открытии, хотя именно таким образом на сайтах и в документации описывается реализация RecyclerViewAdapter'а в приложении.
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
@LukyanovPA
Android Developer
Использовать ListAdapter и DiffUtil
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы