2016-06-07 75 views
0

「我有一個共同的控制器,其中有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

用戶選擇單個或多個項目在哪裏? –

回答

0

添加listener至選擇(單個或多個)和內部的listener更改checkbox的可見性。

+0

你可以只發布一些示例代碼 – Harshith

+0

你可以添加你當前的代碼來選擇單個或多個 –

+0

我已經更新了有問題的代碼 – Harshith