2016-07-25 46 views
1

我遇到了问题。我用setChecked,True和False做了一个复选框,但是我不知道为什么这不起作用。首先,我需要调用holder.textView。因为我的aplicaiton checbox是可见的,但不能集中。当我做一些像这样的代码(工作),但是当我特林作出手柄查了一些IFS()/未选中的一切不工作:RecyclerView电视上的复选框

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; 

所以我尝试这样的事情。首先我为ontxtview调用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; 
+1

检查[此](HTTP: //stackoverflow.com/a/38526646/3117966) – Nisarg

+0

感谢您的链接,但这不适合我 – Rodriquez

+0

你得到哪个错误? – Nisarg

回答

1

取一个布尔在模型类:

private boolean isCheck; 

public boolean isCheck() { 
    return isCheck; 
} 

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

在适配器类:

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); 
}