作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 Room、ViewModel、LiveData、Recylerview 实现了一个 MVVM 模式的 android java 应用程序。
有 1 或 2 个项目的 recyclerview 没问题,
但是当 recyclerview 项目增加时,比如 >10 个项目,当我启用或禁用复选框时,recyclerview 中的其他项目也会受到影响。
例如:
如果我更改项目 [5] 处的复选框(项目 ID 为 21,启用复选框),它还会为其他项目触发 OnCheckedChangeListener,例如项目 [1](项目 ID 为 15,启用复选框)和项目 [8](项目 ID 为 18,启用复选框)。
日志:
2019-04-25 11:15:33.343 9890-9890/com.hardian.mvvm.sample D/RVAdapter: setOnCheckedChange--- ID :21 isRetryEnabled; false isChecked true
2019-04-25 11:15:33.405 9890-9890/com.hardian.mvvm.sample D/RVAdapter: setOnCheckedChange--- ID :15 isRetryEnabled; false isChecked true
2019-04-25 11:15:33.415 9890-9890/com.hardian.mvvm.sample D/RVAdapter: setOnCheckedChange--- ID :18 isRetryEnabled; false isChecked true
代码:在我的 StatusRecyclerViewAdapter 中
@Override
public void onBindViewHolder(StatusViewHolder holder, int position) {
StatusItem statusItem = mDataSet.get(position);
if (statusItem != null) {
cbStatus.setChecked(statusItem.isRetryEnabled());
cbStatus.setOnCheckedChangeListener((buttonView, isChecked) -> {
Log.d("RVAdapter", "setOnCheckedChange--- ID :" + statusItem.getId()+ " isRetryEnabled; "+statusItem.isRetryEnabled()+" isChecked "+isChecked);
//update the model via the activitiy's viewmodel through the onStatusCheckBoxChangeListener interface.
if (onStatusCheckBoxChangeListener != null)
onStatusCheckBoxChangeListener.onStatusCheckBoxChanged(statusItem,isChecked);
});
}
}
我需要一个解决方案来解决 Recylerview 回收的这个问题。
注意:我试过this.setIsRecyclable(false);
,它解决了这个问题,但不推荐,我需要找到另一种机制来避免这种情况。
最佳答案
代码:
cbStatus.setTag(statusItem);
cbStatus.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
StatusItem item = (StatusItem) cb.getTag();
if (onStatusCheckBoxChangeListener != null)
onStatusCheckBoxChangeListener.onStatusCheckBoxChanged(item,cb.isChecked());
}
});
关于android - 在 Recylerview 中实现复选框。 MVVM Room ViewModel LiveData Recylerview 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55852816/
我是一名优秀的程序员,十分优秀!