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);
}
我遇到了问题。我用 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);
}