2016-06-07 16 views
0

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

}

+1

Suche auf Google .Was hast du bisher versucht? –

+0

poste deinen Code hier –

+0

wo wählt der Benutzer ein oder mehrere Artikel aus? –

Antwort

0

eine listener Ihrer Auswahl hinzufügen (einzelne oder mehrere) und innerhalb der listener Ändern Sie die Sichtbarkeit der checkbox.

+0

können Sie nur einige Beispielcode posten – Harshith

+0

Können Sie Ihren aktuellen Code für die Auswahl Single oder mehrere hinzufügen –

+0

Ich habe den betreffenden Code aktualisiert – Harshith

Verwandte Themen