Screen Shots:
Step 1:
create new project and open activity_main.xml file and copy the below code
Step 2:
open build.gradle(app) file and sync below libraries
Step 3:
Create Model.java model class and take itemName, and isSelected properties like below.
Step 4:
Open MainActivity.java class file and follow the below code
Step 5:
create a layout file for list item row_item.xml like below
Step 6:
create ModelAdapter.java file copy the below code
Download Source Code:
Step 1:
create new project and open activity_main.xml file and copy the below code
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/cameraContainer" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:orientation="horizontal"> <CheckBox android:id="@+id/chk_select_all" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:text="Select All" android:textSize="22dp" /> <Button android:id="@+id/btn_delete_all" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_margin="10dp" android:layout_weight="1" android:background="@color/colorPrimary" android:paddingLeft="15dp" android:paddingRight="15dp" android:text="Delete All" android:textAllCaps="false" android:textColor="#ffffff" android:textSize="18dp" /> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="none" /> </LinearLayout>
Step 2:
open build.gradle(app) file and sync below libraries
compile 'com.android.support:cardview-v7:25.1.0' compile 'com.android.support:recyclerview-v7:25.1.0' compile 'com.android.support:design:25.1.0'
Step 3:
Create Model.java model class and take itemName, and isSelected properties like below.
package com.prasad.selectrecyclerviewitems; import java.io.Serializable; public class Model implements Serializable { private String itemName; private boolean isSelected; public Model(String itemName, boolean isSelected) { this.itemName = itemName; this.isSelected = isSelected; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public boolean isSelected() { return isSelected; } public void setSelected(boolean selected) { isSelected = selected; } }
Step 4:
Open MainActivity.java class file and follow the below code
package com.prasad.selectrecyclerviewitems; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private CheckBox chk_select_all; private Button btn_delete_all; private ArrayList<Model> item_list = new ArrayList<>(); private ModelAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initControls(); } private void initControls() { recyclerView = (RecyclerView) findViewById(R.id.recycler_view); chk_select_all = (CheckBox) findViewById(R.id.chk_select_all); btn_delete_all = (Button) findViewById(R.id.btn_delete_all); item_list.add(new Model("Alpha", false)); item_list.add(new Model("Beta", false)); item_list.add(new Model("Cup Cake", false)); item_list.add(new Model("Donut", false)); item_list.add(new Model("Eclair", false)); item_list.add(new Model("Froyo", false)); item_list.add(new Model("Ginger Bread", false)); item_list.add(new Model("Honycomb", false)); item_list.add(new Model("Icecream Sandwhich", false)); item_list.add(new Model("Jelly Bean", false)); item_list.add(new Model("Kitkat", false)); item_list.add(new Model("Lolly Pop", false)); item_list.add(new Model("Marsh Mallow", false)); item_list.add(new Model("Nougat", false)); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); mAdapter = new ModelAdapter(item_list); recyclerView.setAdapter(mAdapter); chk_select_all.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (chk_select_all.isChecked()) { for (Model model : item_list) { model.setSelected(true); } } else { for (Model model : item_list) { model.setSelected(false); } } mAdapter.notifyDataSetChanged(); } }); btn_delete_all.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (chk_select_all.isChecked()) { item_list.clear(); mAdapter.notifyDataSetChanged(); chk_select_all.setChecked(false); } else { Snackbar.make(v, "Please click on select all check box, to delete all items.", Snackbar.LENGTH_LONG).show(); } } }); } }
Step 5:
create a layout file for list item row_item.xml like below
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="75dp" android:layout_margin="5dp" android:orientation="horizontal" card_view:cardCornerRadius="5dp" card_view:cardUseCompatPadding="true"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal"> <CheckBox android:id="@+id/chk_selected" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" /> <TextView android:id="@+id/txt_Name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/chk_selected" android:layout_weight="1" android:padding="10dp" android:text="Item Name" android:textColor="@color/black" android:textSize="16dp" /> <ImageButton android:id="@+id/btn_delete_unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="@null" android:src="@drawable/ic_clear_black_24dp" /> </LinearLayout> </RelativeLayout> </android.support.v7.widget.CardView>
Step 6:
create ModelAdapter.java file copy the below code
package com.prasad.selectrecyclerviewitems; import android.app.AlertDialog; import android.content.DialogInterface; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.ImageButton; import android.widget.TextView; import java.util.ArrayList; public class ModelAdapter extends RecyclerView.Adapter<ModelAdapter.ViewHolder> { public ArrayList<Model> item_list; public ModelAdapter(ArrayList<Model> arrayList) { item_list = arrayList; } @Override public ModelAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // create a new view View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_item, null); // create ViewHolder ViewHolder viewHolder = new ViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(ModelAdapter.ViewHolder holder, int position) { final int pos = position; holder.item_name.setText(item_list.get(position).getItemName()); holder.chkSelected.setChecked(item_list.get(position).isSelected()); holder.chkSelected.setTag(item_list.get(position)); holder.chkSelected.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { CheckBox cb = (CheckBox) v; Model model = (Model) cb.getTag(); model.setSelected(cb.isChecked()); item_list.get(pos).setSelected(cb.isChecked()); } }); holder.btn_delete.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { deleteItemFromList(v, pos); } }); } @Override public int getItemCount() { return item_list.size(); } // confirmation dialog box to delete an unit private void deleteItemFromList(View v, final int position) { AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); //builder.setTitle("Dlete "); builder.setMessage("Delete Item ?") .setCancelable(false) .setPositiveButton("CONFIRM", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { item_list.remove(position); notifyDataSetChanged(); } }) .setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); builder.show(); } public static class ViewHolder extends RecyclerView.ViewHolder { public TextView item_name; public ImageButton btn_delete; public CheckBox chkSelected; public ViewHolder(View itemLayoutView) { super(itemLayoutView); item_name = (TextView) itemLayoutView.findViewById(R.id.txt_Name); btn_delete = (ImageButton) itemLayoutView.findViewById(R.id.btn_delete_unit); chkSelected = (CheckBox) itemLayoutView.findViewById(R.id.chk_selected); } } }