RecyclerView 中电视应用程序的复选框

Checkbox on aplication for tv in RecyclerView

我遇到了问题。我用 setChecked、True 和 False 创建了一个复选框,但我不知道为什么这根本不起作用。首先我需要打电话给 holder.textView。因为在我的应用程序上,复选框是可见的,但无法聚焦。当我编写这样的代码时(有效),但是当我尝试为句柄 checked/unchecked 编写一些 ifs() 时,一切都不起作用:

 case SETTINGS_CHANNELS:
            holder.checkBox.setVisibility(View.VISIBLE);
            holder.title.setText(((List<LiveTvChannel>) list).get(position).getTitle());
            holder.title.requestFocus();

            holder.title.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    holder.checkBox.setChecked(true);
                }
            });

            break;

所以我尝试这样的事情。首先,我为 TexxtView 调用 onClick 方法,接下来我调用复选框。但这没有用。 Any1 可以帮忙吗?

switch (posit) {
        case SETTINGS_CHANNELS:
            holder.checkBox.setVisibility(View.VISIBLE);
            holder.title.setText(((List<LiveTvChannel>) list).get(position).getTitle());
            holder.title.requestFocus();

            holder.title.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            if(!isChecked){
                                holder.checkBox.setChecked(true);
                            }else{
                                holder.checkBox.setChecked(false);
                            }
                        }
                    });
                }
            });

            break;

在模型中取一个布尔值 class :

private boolean isCheck;

public boolean isCheck() {
    return isCheck;
}

public void setCheck(boolean check) {
    isCheck = check;
}

在适配器中 class :

private CompoundButton.OnCheckedChangeListener checkedListener = new CompoundButton.OnCheckedChangeListener() {                      
                        @Override
                        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                            // TODO Auto-generated method stub
                       int getPosition = (Integer) v.getTag();  // Here we get the position that we have set for the checkbox using setTag.
                       boolean flag= list.get(getPosition).isCheck();
                       for (int i = 0; i < list.size(); i++) {
                       if (getPosition == i) {
                       list.get(getPosition).setCheck(true);
                       } else {
                       list.get(getPosition).setCheck(false);
                       }
                       }

                     notifyDataSetChanged();
                    });;

在适配器的 onBindViewHolder 中:

@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
     holder.checkbox.setOnCheckedChangeListener(null);
     holder.checkbox.setChecked(movieItems.get(position).isCheck()); 
     holder.checkbox.setOnCheckedChangeListener(checkedListener);
}