"Ich habe einen gemeinsamen Controller. Darin gibt es 2 Felder. Textfeld und ein Kontrollkästchen." Meine Frage ist: "Wenn der Benutzer ein einzelnes Element auswählt, sollte das Kontrollkästchen nicht sichtbar sein und wenn der Benutzer mehrere Elemente auswählt, sollte das Kontrollkästchen sichtbar sein." Dies ist in Android. Bitte führe mich durch das.wie Kontrollkästchen bei mehreren Auswahlmöglichkeiten sichtbar machen
der Code wie unten angegeben:
public class ProfileItemDialogFilterableAdapter erweitert 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();
}
};
}
}
Suche auf Google .Was hast du bisher versucht? –
poste deinen Code hier –
wo wählt der Benutzer ein oder mehrere Artikel aus? –