【发布时间】:2017-11-22 10:13:20
【问题描述】:
我有一个 RecyclerView 网格适配器,在父活动中包含复选框和一个显示按钮。如果我们选择复选框父活动显示按钮启用并且如果我们未选中复选框显示按钮将禁用,这就是我的要求,它工作正常,但是当我滚动回收视图时,我的显示按钮禁用。当我滚动时,我得到item.isChecked() 是假的。任何人都可以帮我实现我的要求,请解释一下
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
try {
final GridViewHolder viewHolder = (GridViewHolder) holder;
final MyList item = items.get(position);
viewHolder.myCheckBox.setTag(position);
viewHolder.myCheckBox.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton,
boolean b) {
item.setChecked(b);
if (item.isChecked())
Count++;
else
Count--;
if (Count > 0) {
((MyActivity)context).showButton().setEnabled(true);
} else {
((MyActivity)context).showButton().setEnabled(false);
}
}
});
viewHolder.myCheckBox.setChecked(item.isChecked());
} catch (Exception e) {
e.printStackTrace();
}
}
在我的 pojo 列表类中,我为身份复选框返回值编写了两个函数
boolean isChecked;
public boolean isChecked() {
return isChecked;
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
}
适配器中的 ViewHolder 内部类
public class GridViewHolder extends RecyclerView.ViewHolder {
private CheckBox myCheckBox;
public GridViewHolder(final View parent) {
super(parent);
myCheckBox = (CheckBox) parent.findViewById(myCheckBox);
((ProductListingActivity)context).showButton().setEnabled(false);
parent.setOnClickListener(GridAdapterMy.this);
}
}
【问题讨论】:
-
我告诉过你需要保存复选框的状态我的朋友
-
请问你能发给我任何代码示例吗,请看我的代码
-
等我分享给你一个代码
-
亲爱的朋友我真的不明白,我是初学者,我必须在哪里放置 dis 代码?在 onbindviewholder 或 ViewHolder 中?实际上我在主要活动中使用分页,所以每次 recyclerview 滚动 api 调用都会发生并将新数据添加到列表中。我的复选框状态仍然稳定,只显示按钮状态变化
-
查看我的回答删除 setOnCheckedChangeListener 并使用 setOnClickListener。
标签: java android checkbox android-recyclerview