drakeet / MultiType

Flexible multiple types for Android RecyclerView.
Apache License 2.0
5.76k stars 751 forks source link

Question:如何响应二级点按事件? #195

Closed Xbigfat closed 6 years ago

Xbigfat commented 6 years ago

作者您好,感谢您开发了MultiType开源项目 在实际开发中,我按照demo中 bilibili activity 的步骤,创建了一个 垂直 RecyclerView 嵌套 横向 RecyclerView 的结构.现在问题是,如何响应 RecyclerView 的点击事件?

我看到 BiliBili 的 PostsAdapter 中 使用 getAdapterPosition() 获取到了点按的二级RecyclerView位置,但是此时我的问题是,如何在此同时知道 点按的是哪个 一级 位置 ?

我按照此方法实现的是 一级有几个item ,每个 item 中有二级横向的 9张照片. 在二级中删除某一张,但是造成所有一级 item 中的同位置的照片都丢失了.

打扰您时间了!请问如何解决?

Xbigfat commented 6 years ago

不好意思,是我数据源的问题.

drakeet commented 6 years ago

这个问题不属于 MultiType 的问题,也就是说如果你的写法有问题,即使你使用原生 RecyclerView.Adapter 来实现你的视图,仍然也会有问题。

对于你所谓的「造成所有一级 item 中的同位置的照片都丢失」,理论上只要你更新的是正确的 list item 对象内容,是不会出现这个情况的,我不知道你的代码是怎么写的。

至于想要获得一级位置,你可以在绑定数据的时候,把整个一级 holder 传递给二级 holder,这样二级 holder 可以通过一级 holder get 到一级 position。

Xbigfat commented 6 years ago

是的,真的不好意思,这个我一开始没想到是数据源的问题.抱歉打扰您时间了. 我刚刚意识到我传入每个 item 的 图片list 是同一个,所以会出现这个问题.再次感谢你