「我有一個共同的控制器,其中有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();
}
};
}
}
在google上搜索。到目前爲止您嘗試了什麼? –
在此發佈您的代碼 –
用戶選擇單個或多個項目在哪裏? –