android - How to use SwipeDismissBehavior.OnDismissListener on RecyclerView -
i trying use swipedismissbehavoir design support library. i've list items in recyclerview , swiping item have dismiss (like google inbox app) .
i've set listener recyclerview items swipedismissbehavior ondismiss listener not getting called.
swipedismissbehavior behavior = new swipedismissbehavior(); coordinatorlayout.layoutparams params = (coordinatorlayout.layoutparams)mitemlayout.getlayoutparams(); params.setbehavior(behavior); behavior.setlistener(new swipedismissbehavior.ondismisslistener() { @override public void ondismiss(view view) { } @override public void ondragstatechanged(int i) { } }); mitemlayout.setlayoutparams(params);
here example how delete row swipe
mainactivity.java
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); final recyclerview recyclerview = (recyclerview)findviewbyid(r.id.recyclerview); // init layout manager recyclerview.layoutmanager layoutmanager = new linearlayoutmanager(this); final arraylist<string> list = new arraylist<string>(); list.add("item1"); list.add("item2"); list.add("item3"); list.add("item4"); list.add("item5"); list.add("item6"); final myadapter adapter = new myadapter(list); recyclerview.setlayoutmanager(layoutmanager); recyclerview.setadapter(adapter); itemtouchhelper swipetodismisstouchhelper = new itemtouchhelper(new itemtouchhelper.simplecallback( itemtouchhelper.left | itemtouchhelper.right, itemtouchhelper.left | itemtouchhelper.right) { @override public boolean onmove(recyclerview recyclerview, recyclerview.viewholder viewholder, recyclerview.viewholder target) { // callback drag-n-drop, false skip feature return false; } @override public void onswiped(recyclerview.viewholder viewholder, int direction) { // callback swipe dismiss, removing item data , adapter list.remove(viewholder.getadapterposition()); adapter.notifyitemremoved(viewholder.getadapterposition()); } }); swipetodismisstouchhelper.attachtorecyclerview(recyclerview); } adapter
public class myadapter extends recyclerview.adapter<myadapter.myviewholder> { arraylist<string> dataset_; public static class myviewholder extends recyclerview.viewholder{ public button mbtn; public textview mtextview2; public myviewholder(view v){ super(v); mbtn = (button) itemview.findviewbyid(r.id.delete); mtextview2 = (textview) itemview.findviewbyid(r.id.textview2); } } public myadapter (arraylist<string> dataset){ dataset_ = dataset; } @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype){ view v = layoutinflater.from(parent.getcontext()).inflate(r.layout.my_text_view,parent,false); myviewholder myviewholder = new myviewholder(v); return myviewholder; } @override public void onbindviewholder(myviewholder holder,int position){ holder.mtextview2.settext(dataset_.get(position)); } @override public int getitemcount(){ return dataset_.size(); } } layout
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:baselinealigned="false" android:orientation="vertical" android:padding="16dp"> <textview style="?android:listseparatortextviewstyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/heading_dismissable_recycler_view" /> <android.support.v7.widget.recyclerview android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent"/> </linearlayout> item in recyclerview
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancemedium" android:text="medium text" android:id="@+id/textview2"/> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/delete" android:text="delete" android:layout_marginleft="150dp" android:visibility="invisible" /> </linearlayout> </linearlayout>
Comments
Post a Comment