首页 > 解决方案 > 如何将数据从 1 个视图持有者传递到其他视图持有者

问题描述

我有一个recycler view包含 2 view holders

一个用于标题,一个用于其他项目。

第二个视图持有者在每一行都有复选框。当用户点击复选框时,我想更新一个计数器header's view holder.

我尝试HeaderViewHolder从调用,但它与消息ListViewHolder崩溃。cannot be cast to

有什么办法可以将数据从 1 个视图持有者传递给其他人。

标签: androidandroid-layoutandroid-recyclerview

解决方案


  1. 您可以HeaderViewHolder在 Adapter 中保存实例和计数器。
private HeaderViewHolder headerHolder;
private int counter = 0;
  1. 初始化headerHolder内部onBindViewHolder方法并设置OnClickListener复选框。
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    if (holder instanceof HeaderViewHolder) {
        headerHolder = (HeaderViewHolder) holder;
    }
    if (holder instanceof ListViewHolder) {
        // set listener and don't forget to call "counter++"
        // and "headerHolder.setTitle("title you want")" inside it
    }
}

推荐阅读