package io.github.codefalling.recyclerviewswipedismiss.sample; import android.app.AlertDialog; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import java.util.LinkedList; import java.util.List; import io.github.codefalling.recyclerviewswipedismiss.SwipeDismissRecyclerViewTouchListener; public class MainActivity extends ActionBarActivity { private void showDialog(String msg){ AlertDialog alert = new AlertDialog.Builder(MainActivity.this) .setTitle("alert") .setMessage(msg) .setCancelable(false) .create(); alert.setCanceledOnTouchOutside(true); alert.show(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); final RecyclerView anotherRecyclerView = (RecyclerView) findViewById(R.id.recyclerHorizontalView); LinearLayoutManager layoutManager = new LinearLayoutManager(this); LinearLayoutManager horizontalLayoutManager = new LinearLayoutManager(this); horizontalLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(layoutManager); anotherRecyclerView.setLayoutManager(horizontalLayoutManager); List dataset = new LinkedList(); for (int i = 0; i < 100; i++){ dataset.add("item" + i); } final MyAdapter adapter = new MyAdapter(dataset); recyclerView.setAdapter(adapter); anotherRecyclerView.setAdapter(adapter); // Bind touch listener SwipeDismissRecyclerViewTouchListener listener = new SwipeDismissRecyclerViewTouchListener.Builder( recyclerView, new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() { @Override public boolean canDismiss(int position) { return true; } @Override public void onDismiss(View view) { int id = recyclerView.getChildPosition(view); adapter.mDataset.remove(id); adapter.notifyDataSetChanged(); Toast.makeText(getBaseContext(), String.format("Delete item %d",id),Toast.LENGTH_LONG).show(); } }) .setIsVertical(false) .setItemTouchCallback( new SwipeDismissRecyclerViewTouchListener.OnItemTouchCallBack() { @Override public void onTouch(int index) { showDialog(String.format("Click item %d", index)); } }) .create(); recyclerView.setOnTouchListener(listener); // set touch listener for recyclerHorizontalView(horizontal swipe to remove) SwipeDismissRecyclerViewTouchListener verticalListener = new SwipeDismissRecyclerViewTouchListener.Builder( anotherRecyclerView, new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() { @Override public boolean canDismiss(int position) { return true; } @Override public void onDismiss(View view) { int id = recyclerView.getChildPosition(view); adapter.mDataset.remove(id); adapter.notifyDataSetChanged(); Toast.makeText(getBaseContext(), String.format("Delete item %d",id),Toast.LENGTH_LONG).show(); } }).setIsVertical(true).create(); anotherRecyclerView.setOnTouchListener(verticalListener); } public class MyAdapter extends RecyclerView.Adapter{ public List mDataset; public MyAdapter(List dataset) { super(); mDataset = dataset; } @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder viewHolder, int i) { viewHolder.mTextView.setText(mDataset.get(i)); } @Override public int getItemCount() { return mDataset.size(); } public class ViewHolder extends RecyclerView.ViewHolder{ public TextView mTextView; public ViewHolder(View itemView) { super(itemView); mTextView = (TextView) itemView; } } } }