现在用一个 RecyclerView 做菜单,里面有 CheckBox ,可以选择,菜单有重置功能,点击重置按钮后所有已 checked 的 CheckBox 会把状态重置,但是现在出现了一个问题,就是我把菜单往下滑动后, 上面会有一部分菜单被隐藏,这时我遍历 RecyclerView 的 item 就无法遍历到这部分,所以导致这部分菜单无法重置,请问有什么好的办法?
1
ivechan 2016-11-19 16:18:20 +08:00
你更改状态不是通过 RecyclerView.Adapter ? 而是直接对 checkbox 操作吗?
|
2
ivechan 2016-11-19 16:24:39 +08:00
adapter 提供个重置 checkbox 接口, onBindViewHolder 方法里判断 checkbox 状态就行了吧
|
3
kassadin 2016-11-19 16:27:35 +08:00
不要用 onCheck,设置 checkListener 为 null, 用 onClick
|
4
Guaidaodl 2016-11-19 16:31:20 +08:00
Adapter 用记录每一个 Checkbox 状态, 然后点击重置的时候更新 Adapter 里的数据, 然后 notify 就可以了.
|
5
pcatzj OP 不好意思,这个帖子发重了, https://www.v2ex.com/t/321690#reply7 这里是原来的,发的时候提示我主题已存在,所以发了这个,现在看来是网络问题。问题已解决,谢谢大家的热心回复!
|
6
pcatzj OP |
7
pcatzj OP @Guaidaodl
对,后来就是通过这个方法解决了,但是之前还是想法太狭隘,因为要重置 checkbox 的状态,就自然而然的想到了遍历 item 对 checkbox 进行操作,结果导致了一个大 bug ,感谢您的不吝赐教! |
8
iAcn 2016-11-19 22:45:01 +08:00 via Android
以前碰见过这种问题,当时是 RecyclerView.setItemViewCacheSize(0) 把缓存个数设置成可见 Item + 0 个,这样保证每个 Item 滑动都会走 onBindViewHolder(),然后再从这里边设置。不知道适不适用你的情况 😂
|
10
iAcn 2016-11-19 23:09:04 +08:00 via Android
@pcatzj 我是这样做的,也遍历了可见 Item ,因为我的 Item 有个动画,直接 notifyDataSetChange() 就显示不出动画来了
|