From 1f75c11e6a10d68cd7c61d544a7e3b3300ef76f3 Mon Sep 17 00:00:00 2001 From: John Shelley Date: Fri, 19 Dec 2014 10:32:59 -0600 Subject: [PATCH] (recyclerview.adapter) Update adapter. See details -> RecyclerViewAdapter in the demo now extends from RecyclerSwipeAdapter from the library. This greatly simplifies things for the users. They still must implement their own ViewHolder and extend from the abstract one inside the SwipeAdapter. See the demo for recyclerview for a better understanding of how it works. Also increased the build and compile versions to 21. Added elevation to the top view for 5.0 devices. See the recyclerview on a device running android 5.0+ to see the difference from the edge. This can be replicated with a shadow drawable gradient with lower devices. Maybe someone else can add this feature. --- .../swipedemo/RecyclerViewExample.java | 5 +- .../adapter/RecyclerViewAdapter.java | 83 ++++++++++++++ demo/src/main/res/drawable/divider.xml | 4 +- .../src/main/res/layout/recyclerview_item.xml | 65 +++++++++++ gradle.properties | 6 +- .../swipe/adapters/RecyclerSwipeAdapter.java | 106 ++++++++++++++++++ 6 files changed, 262 insertions(+), 7 deletions(-) create mode 100644 demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java create mode 100644 demo/src/main/res/layout/recyclerview_item.xml create mode 100644 library/src/main/java/com/daimajia/swipe/adapters/RecyclerSwipeAdapter.java diff --git a/demo/src/main/java/com/daimajia/swipedemo/RecyclerViewExample.java b/demo/src/main/java/com/daimajia/swipedemo/RecyclerViewExample.java index f165a13..d3f0aef 100644 --- a/demo/src/main/java/com/daimajia/swipedemo/RecyclerViewExample.java +++ b/demo/src/main/java/com/daimajia/swipedemo/RecyclerViewExample.java @@ -16,6 +16,7 @@ import android.view.View; import android.widget.Toast; import com.daimajia.swipe.util.Attributes; +import com.daimajia.swipedemo.adapter.RecyclerViewAdapter; import com.daimajia.swipedemo.adapter.RecyclerViewAdvancedAdapter; import org.lucasr.twowayview.ItemClickSupport; @@ -61,8 +62,8 @@ public class RecyclerViewExample extends Activity { recyclerView.addItemDecoration(new DividerItemDecoration(divider)); mDataSet = new ArrayList(Arrays.asList(adapterData)); - mAdapter = new RecyclerViewAdvancedAdapter(this, mDataSet); - ((RecyclerViewAdvancedAdapter) mAdapter).setMode(Attributes.Mode.Single); + mAdapter = new RecyclerViewAdapter(this, mDataSet); + ((RecyclerViewAdapter) mAdapter).setMode(Attributes.Mode.Single); recyclerView.setAdapter(mAdapter); /* Listeners */ diff --git a/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java b/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java new file mode 100644 index 0000000..971e786 --- /dev/null +++ b/demo/src/main/java/com/daimajia/swipedemo/adapter/RecyclerViewAdapter.java @@ -0,0 +1,83 @@ +package com.daimajia.swipedemo.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; +import android.widget.Toast; + +import com.daimajia.androidanimations.library.Techniques; +import com.daimajia.androidanimations.library.YoYo; +import com.daimajia.swipe.SimpleSwipeListener; +import com.daimajia.swipe.SwipeLayout; +import com.daimajia.swipe.adapters.RecyclerSwipeAdapter; +import com.daimajia.swipe.implments.SwipeItemRecyclerMangerImpl; +import com.daimajia.swipedemo.R; + +import java.util.ArrayList; + +public class RecyclerViewAdapter extends RecyclerSwipeAdapter { + + public static class SimpleViewHolder extends ViewHolder { + SwipeLayout swipeLayout; + TextView textViewPos; + TextView textViewData; + + public SimpleViewHolder(View itemView) { + super(itemView); + swipeLayout = (SwipeLayout) itemView.findViewById(R.id.swipe); + textViewPos = (TextView) itemView.findViewById(R.id.position); + textViewData = (TextView) itemView.findViewById(R.id.text_data); + } + } + + private Context mContext; + private ArrayList mDataset; + + protected SwipeItemRecyclerMangerImpl mItemManger = new SwipeItemRecyclerMangerImpl(this); + + public RecyclerViewAdapter(Context context, ArrayList objects) { + super(context, objects); + this.mContext = context; + this.mDataset = objects; + } + + @Override + public ViewHolder createRecyclerViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item, parent, false); + return new SimpleViewHolder(view); + } + + @Override + public void bindRecyclerViewHolder(ViewHolder viewHolder, int position) { + SimpleViewHolder simpleViewHolder = (SimpleViewHolder) viewHolder; + String item = mDataset.get(position); + simpleViewHolder.swipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown); + simpleViewHolder.swipeLayout.addSwipeListener(new SimpleSwipeListener() { + @Override + public void onOpen(SwipeLayout layout) { + YoYo.with(Techniques.Tada).duration(500).delay(100).playOn(layout.findViewById(R.id.trash)); + } + }); + simpleViewHolder.swipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() { + @Override + public void onDoubleClick(SwipeLayout layout, boolean surface) { + Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show(); + } + }); + simpleViewHolder.textViewPos.setText((position + 1) + "."); + simpleViewHolder.textViewData.setText(item); + mItemManger.bind(viewHolder.itemView, position); + } + + @Override + public int getItemCount() { + return mDataset.size(); + } + + @Override + public int getSwipeLayoutResourceId(int position) { + return R.id.swipe; + } +} diff --git a/demo/src/main/res/drawable/divider.xml b/demo/src/main/res/drawable/divider.xml index c837d29..111d79d 100644 --- a/demo/src/main/res/drawable/divider.xml +++ b/demo/src/main/res/drawable/divider.xml @@ -18,7 +18,7 @@ android:shape="rectangle"> - + \ No newline at end of file diff --git a/demo/src/main/res/layout/recyclerview_item.xml b/demo/src/main/res/layout/recyclerview_item.xml new file mode 100644 index 0000000..4a050f3 --- /dev/null +++ b/demo/src/main/res/layout/recyclerview_item.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + +