доброго времени. Используя DiffUtil, я хочу изменить цвет выделенного текста и представления карточки при каждом щелчке по любому элементу. Код, который я написал, выглядит следующим образом, но кажется, что срок действия notifyItemChanged истек. Спасибо за самую свежую информацию. Помогите мне написать более эффективный код.
класс КатегорииАдаптер @Inject конструктор(@ApplicationContext частный контекст val: Context) : RecyclerView.Adapter() { //Привязка частная привязка lateinit var: ItemCategoriesBinding частные элементы var = пустой список() частная переменная selectedItemPosition: Int = -1 частный вар LastItemSelectedPos = -1 переопределить удовольствие onCreateViewHolder (родитель: ViewGroup, viewType: Int): ViewHolder { привязка = ItemCategoriesBinding.inflate(LayoutInflater.from(parent.context), родительский, false) вернуть ViewHolder() } переопределить удовольствие onBindViewHolder(держатель: ViewHolder, позиция: Int) { Holder.bind(предметы[позиция]) /////// if (позиция == selectedItemPosition) Holder.selectedBg() еще Holder.defaultBg() Holder.itemView.setOnClickListener { selectedItemPosition = Holder.bindingAdapterPosition LastItemSelectedPos = if (lastItemSelectedPos == -1) selectedItemPosition else { notifyItemChanged (lastItemSelectedPos) выбранноеItemPosition } notifyItemChanged (выбранныйItemPosition) } } переопределить удовольствие getItemCount() = items.size переопределить удовольствие getItemViewType(позиция: Int) = позиция переопределить fun getItemId(position: Int) =position.toLong() внутренний класс ViewHolder: RecyclerView.ViewHolder(binding.root) { забавное связывание (пункт: ResponseCategoriesItem) { //initViews привязка.применить { titleCategories.text = item.title //просмотр карты //Нажмите root.setOnClickListener { onItemClickListener?.let { it(item.id!!, item.title!!) } } } } весело defaultBg() { привязка.применить { bgCard.setCardBackgroundColor(ContextCompat.getColor(context, R.color.Bright_Gray)) titleCategories.setTextColor(ContextCompat.getColor(context, R.color.Raisin_Black)) } } весело selectedBg() { привязка.применить { bgCard.setCardBackgroundColor(ContextCompat.getColor(context, R.color.Raisin_Black)) titleCategories.setTextColor(ContextCompat.getColor(context, R.color.white)) } } } частный var onItemClickListener: ((String, String) -> Unit)? = ноль fun setOnItemClickListener(слушатель: (String, String) -> Unit) { onItemClickListener = прослушиватель } fun setData(данные: List) { val адаптерDiffUtils = BaseDiffUtils (элементы, данные) val diffUtils = DiffUtil.calculateDiff(adapterDiffUtils) элементы = данные diffUtils.dispatchUpdatesTo(это) } }
xml-коды
Мой желаемый пользовательский интерфейс
