gpt4 book ai didi

android - 在 RecyclerView android 中禁用项目

转载 作者:行者123 更新时间:2023-11-30 01:30:51 26 4
gpt4 key购买 nike

我的 RecyclerView 是一个带有复选框的列表,页面底部是一个提交按钮。当我点击按钮时,复选框应该被禁用,但那些已经被选中的框的状态应该保留。此外,如何访问位于 RecyclerView.ViewHolder 中的复选框?请帮忙。

最佳答案

最好将此作为您正在建模的项目的属性。

因此,如果模型项目将具有您可以更改的“已启用”状态。

public class Model {

private boolean isEnabled;
private boolean isChecked;

public void setEnabled(boolean enabled) {
isEnabled = enabled;
}

public void setChecked(boolean checked) {
isChecked = checked;
}

public boolean isEnabled() {
return isEnabled;
}

public boolean isChecked() {
return isChecked;
}
}

然后您的 ViewHolder 将在您每次绑定(bind)到它时检查此属性。此外,ViewHolder 本身将监听对其处理的 View 上的复选框的更改。

public class ModelViewHolder extends RecyclerView.ViewHolder implements CompoundButton.OnCheckChangeListener {
private CheckBox checkBox;
private Model boundItem;

public ModelViewHolder(View itemView) {
checkBox = (CheckBox) itemView.findItemById(R.id.checkBoxId);
checkBox.setOnCheckChangeListener(this);
}

public void bind(Model model) {
boundItem = model;
getItemView().setEnabled(model.isEnabled());
checkBox.setChecked(model.isChecked());
}

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
boundItem.setChecked(isChecked);
}
}

现在,这允许项目的状态在用户滚动时保持一致(因为 RecyclerItem 中的 View 被重新使用)。它还允许您在启用/禁用模型项目时更轻松地对项目使用 notifyItemChanged(int position)

关于android - 在 RecyclerView android 中禁用项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com