Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有复选框问题的Android回收器视图_Android_Android Recyclerview - Fatal编程技术网

带有复选框问题的Android回收器视图

带有复选框问题的Android回收器视图,android,android-recyclerview,Android,Android Recyclerview,我的main活动中有一个RecyclerView,它带有一个适配器类。RecyclerView的每个列表单元格都包含一个复选框。为复选框设置一个预选值。如果为真,则选中复选框。还有一件事是,某些项目只允许进行单一选择(即,如果我选中这些项目的复选框,其他复选框将被取消选中)。该值由每个项目字典中的另一个参数确定。我的活动中也有一个按钮,当没有选择任何内容时,按钮将被禁用,反之亦然。如何实现这些功能?我的课程如下 public class FurtherExtrasAdapter extends

我的
main活动中有一个
RecyclerView
,它带有一个
适配器类
RecyclerView
的每个列表单元格都包含一个
复选框
。为
复选框设置一个预选值。如果为真,则选中
复选框
。还有一件事是,某些项目只允许进行单一选择(即,如果我选中这些项目的
复选框
,其他复选框将被取消选中)。该值由每个项目字典中的另一个参数确定。我的活动中也有一个按钮,当没有选择任何内容时,按钮将被禁用,反之亦然。如何实现这些功能?我的课程如下

public class FurtherExtrasAdapter extends RecyclerView.Adapter<FurtherExtrasAdapter.ViewHolder> {


ArrayList<Item> items;
Context context;
int flag = 0;
private CouponCodeActivity mThis;

public FurtherExtrasAdapter(ArrayList<Item> items, CouponCodeActivity mThis, Context context) {
    this.items = items;
    this.mThis = mThis;
    this.context = context;
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell_platform_item, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {

    ;
    holder.enrolment.setText(items.get(position).getName());
    holder.selectEnrollment.setChecked(items.get(position).isPreselect());

}

@Override
public int getItemCount() {
    return items.size();
}


@Override
public long getItemId(int position) {
    return super.getItemId(position);
}

public class ViewHolder extends RecyclerView.ViewHolder {
    TextView enrolment;
    CheckBox selectEnrollment;

    public ViewHolder(View itemView) {
        super(itemView);
        enrolment = (TextView) itemView.findViewById(R.id.tv_entrollment);
        selectEnrollment = (CheckBox) itemView.findViewById(R.id.cb_select_entrollment);


    }
}}

使用CheckClickListener,如

holder.selectEnrollment .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            items.get(position).setPreselect(!items.get(position).isPreselect);
        }
    });
基于此:

然后,我们可以选中/仅选择该复选按钮。其他人应自动取消选择

您可以在适配器中保留一个变量,例如

int position_last_selected = -1;
然后在添加时,检查该值是否为-1。如果没有,则获取该职位的项目

list.get(position_last_selected).setIsPreSelect(false);
// then update your current position item
list.get(position).setIsPreSelect(true);
// update the last selected value
position_last_selected = position;
//Update the adapter
notifiyDataSetChanged();

试试看

但是控制排他性怎么样?什么。你确实想要。活动中的按钮应根据用户单击复选框进行更新。如果未选择任何内容,则按钮应禁用。2.对于recycler视图中的某些项目,一个排他性布尔变量为der。如果这是真的,那么我们只能选中该复选按钮。其他人应自动取消选择。然后设置复选框。设置启用(false);或checkbox.setcheck(真/假);
list.get(position_last_selected).setIsPreSelect(false);
// then update your current position item
list.get(position).setIsPreSelect(true);
// update the last selected value
position_last_selected = position;
//Update the adapter
notifiyDataSetChanged();