Java Class
MainActivityFragment.java
public class MainActivityFragment extends Fragment {
ArrayList<Number> numbers;
private RecyclerView list;
private Button btnGetSelected;
public MainActivityFragment() {
}
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
btnGetSelected = (Button) view.findViewById(R.id.btnGetSelected);
list = (RecyclerView) view.findViewById(R.id.list);
list.setLayoutManager(new LinearLayoutManager(getActivity()));
list.setHasFixedSize(true);
}
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
numbers = new ArrayList<>();
String Ones[] = {"12th","10th", "Graduction", "Post Graduction", "Diploma", "ITI", "BE", "B Tech", "M tech",
"MCA", "MBA", "MCA", "BSC", "MSC", "BA", "MA", "B.COM", "M.COM"};
for (int i = 0; i <= 17; i++) {
Number number = new Number();
number.setTextONEs(Ones[i]);
this.numbers.add(number);
}
NumbersAdapter adapter = new NumbersAdapter(this.numbers);
list.setAdapter(adapter);
btnGetSelected.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
StringBuilder stringBuilder = new StringBuilder();
for (Number number : numbers) {
if (number.isSelected()) {
if (stringBuilder.length() > 0)
stringBuilder.append(", ");
stringBuilder.append(number.getTextOnes());
}
}
Toast.makeText(getActivity(), stringBuilder.toString(), Toast.LENGTH_LONG).show();
}
});
}
}
Bean Class
public class Number {
private String textONEs;
private boolean isSelected;
public String getTextOnes() {
return textONEs;
}
public void setTextONEs(String textONEs) {
this.textONEs = textONEs;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean selected) {
isSelected = selected;
}
}
Adapter Class
public class NumbersAdapter extends RecyclerView.Adapter<NumbersAdapter.ViewHolder> {
ArrayList<Number> numbers;
public NumbersAdapter(List<Number> numbers) {
this.numbers = new ArrayList<>(numbers);
}
@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.client_list_item, parent, false);
return new ViewHolder(v);
}
@Override public void onBindViewHolder(final ViewHolder holder, int position) {
holder.bindData(numbers.get(position));
holder.checkbox.setOnCheckedChangeListener(null);
holder.checkbox.setChecked(numbers.get(position).isSelected());
holder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
numbers.get(holder.getAdapterPosition()).setSelected(isChecked);
}
});
// Check Box Select Method
holder.parentLayout.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
holder.checkbox.performClick();
}
});
}
@Override public int getItemCount() {
return numbers.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private TextView textName;
private CheckBox checkbox;
private LinearLayout lRootLayout,parentLayout;
public ViewHolder(View v) {
super(v);
textName = (TextView) v.findViewById(R.id.textName);
checkbox = (CheckBox) v.findViewById(R.id.checkbox);
lRootLayout=(LinearLayout) v.findViewById(R.id.lRootLayout);
parentLayout=(LinearLayout) v.findViewById(R.id.parentLayout);
}
public void bindData(Number number) {
textName.setText(number.getTextOnes());
}
}
}
Main XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.guna.recyclerviewwithcheckbox.MainActivityFragment" tools:showIn="@layout/activity_main">
<android.support.v7.widget.RecyclerView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.9" android:scrollbars="vertical" />
<Button android:id="@+id/btnGetSelected" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.1" android:text="GET SELECTED" />
</LinearLayout>
adb.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/lRootLayout" android:layout_width="match_parent" android:layout_marginBottom="5dp" android:layout_height="wrap_content" android:orientation="vertical">
<LinearLayout android:id="@+id/parentLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="5dp">
<TextView android:id="@+id/textName" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:textColor="@android:color/black" />
<CheckBox android:id="@+id/checkbox" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".2" />
</LinearLayout>
</LinearLayout>