如何使复选框在多个选项上可见

问题描述:

“我有一个共同的控制器,其中有2个字段,文本字段和复选框。我的问题是“当用户选择单个项目时,该复选框不应该是可见的,并且当用户选择多个项目时,该复选框应该是可见的。”这是在android中。请通过这个指导我。如何使复选框在多个选项上可见

代码,如下所示:

公共类ProfileItemDialogFilterableAdapter延伸RecyclerView.Adapter {

List<SelectableItem> mItemList; 
private LayoutInflater mLayoutInflater; 
public static int mSingleSelection = 1; 
public static int mMultipleSelection = 2; 
private int mSelectedPosition; 
private int mSelectionMode; 
private Context mContext; 

public ProfileItemDialogFilterableAdapter(Context context, List<SelectableItem> itemList) { 
    mItemList = itemList; 
    mLayoutInflater = LayoutInflater.from(context); 
    mContext = context; 

} 

@Override 
public ProfileItemDialogFilterableAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemLayoutView = mLayoutInflater.inflate(R.layout.list_item_profile_item_dialog, parent, false); 

    return new ViewHolder(itemLayoutView); 
} 

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

    SelectableItem current = mItemList.get(position); 

    if (current == null) 
     return; 

    holder.mLabelName.setText(current.getName()); 

    if (mSelectionMode == mMultipleSelection){ 

     holder.mCheckBoxItem.setVisibility(View.VISIBLE); 
     holder.mCheckBoxItem.setChecked(current.isSelected()); 
    } 
    else { 
     holder.mCheckBoxItem.setVisibility(View.GONE); 

     if (position == mSelectedPosition) { 
      holder.mLabelName.setTextColor(mContext.getResources().getColor(R.color.colorBackground)); 
      holder.mLabelName.setBackgroundColor(mContext.getResources().getColor(R.color.colorPrimary)); 

     } else { 
      holder.mLabelName.setTextColor(mContext.getResources().getColor(R.color.textColorFullBlack)); 
      holder.mLabelName.setBackgroundColor(mContext.getResources().getColor(R.color.colorBackground)); 
     } 
    } 
} 

@Override 
public int getItemCount() { 
    return (mItemList != null ? mItemList.size() : 0); 
} 

public void setResult(List<SelectableItem> itemList) { 
    mItemList = itemList; 
    notifyDataSetChanged(); 
} 

public class ViewHolder extends RecyclerView.ViewHolder { 

    CheckBox mCheckBoxItem; 
    TextView mLabelName; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     mCheckBoxItem = (CheckBox) itemView.findViewById(R.id.checkbox_item); 
     mLabelName = (TextView) itemView.findViewById(R.id.label_name); 
     mCheckBoxItem.setOnCheckedChangeListener(onCheckedChangeListener); 
     mLabelName.setOnClickListener(onClickListener); 
    } 

    CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      mItemList.get(getAdapterPosition()).setSelected(isChecked); 

     } 
    }; 

    View.OnClickListener onClickListener = new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 

      mSelectedPosition = getAdapterPosition(); 
      notifyDataSetChanged(); 
     } 
    }; 
} 

}

+1

在google上搜索。到目前为止您尝试了什么? –

+0

在此发布您的代码 –

+0

用户选择单个或多个项目在哪里? –

添加listener至选择(单个或多个)和内部的listener更改checkbox的可见性。

+0

你可以只发布一些示例代码 – Harshith

+0

你可以添加你当前的代码来选择单个或多个 –

+0

我已经更新了有问题的代码 – Harshith