Recently in writing sliding delete, online code is to see the foggy, determined their own research, although the effect is not very good, but the idea is very clear, the code logic is very simple
First look at the main page layout
activity_main.xml--is a simple, custom listview
<relativelayout 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 " tools:context= "Com.example.slidelistview.MainActivity" > < Com.example.slidelistview.SlideListView android:id= "@+id/listview" android:layout_width= "Fill_parent" android:layout_height= "Fill_parent"/></relativelayout>
Take a look at the layout of each item--it's easy on the 2 TextView (I'm too lazy to use imageview, for fear of trouble)
Listview_item.xml
<?xml version= "1.0" encoding= "Utf-8"? ><linearlayout xmlns:android= "http://schemas.android.com/apk/res/ Android " android:layout_width=" match_parent " android:layout_height=" 30DP " android:orientation=" Horizontal "> <textview android:id=" @+id/textview " android:gravity=" center " android: Background= "#FFA07A" android:layout_width= "fill_parent" android:layout_height= "50DP" android:text= "TextView"/> <textview android:id= "@+id/delete" android:gravity= "center" android: Background= "#FF3E96" android:layout_width= "50DP" android:layout_height= "50DP" android:text= "Delete" /></linearlayout>
Mainactivity
Package Com.example.slidelistview;import Java.util.arraylist;import Android.app.activity;import android.os.Bundle; Import Android.view.menu;import Android.view.menuitem;import Android.view.view;import Android.view.view.onclicklistener;import Android.view.viewgroup;import Android.widget.adapterview;import Android.widget.adapterview.onitemclicklistener;import Android.widget.baseadapter;import Android.widget.TextView; public class Mainactivity extends Activity {private Slidelistview listview;private myadapter myadapter;private ArrayList <String> data = new arraylist<string> (), @Overrideprotected void OnCreate (Bundle savedinstancestate) { Super.oncreate (savedinstancestate); Setcontentview (r.layout.activity_main); myadapter = new MyAdapter (); for (int i = 0; I < 10; i++) {data.add ("A");} ListView = (Slidelistview) Findviewbyid (R.id.listview); Listview.setadapter (Myadapter);} Class Myadapter extends Baseadapter {@Overridepublic int getcount () {return data.size ();} @Overridepublic Object GEtitem (int position) {return data.get (position);} @Overridepublic long Getitemid (int position) {return position;} @Overridepublic View GetView (final int position, view Convertview,viewgroup parent) {Viewholder Viewholder = null;if (CONV Ertview = = null) {Viewholder = new Viewholder (); Convertview = View.inflate (Mainactivity.this,r.layout.listview_item, NULL); Viewholder.textview = (TextView) Convertview.findviewbyid (r.id.textview); Viewholder.deletextview = (TextView) Convertview.findviewbyid (R.id.delete); Convertview.settag (Viewholder);} else {Viewholder = (Viewholder) Convertview.gettag ();} ViewHolder.textView.setText (Data.get (position)); ViewHolder.deleTextView.setOnClickListener (New Onclicklistener ( {public void OnClick (View v) {data.remove (position); myadapter.notifydatasetchanged (); Listview.getchildat (position ). ScrollTo (0, 0);}); return Convertview;} Class Viewholder {private TextView textview;private TextView Deletextview;}}}
Slidelistview
Package Com.example.slidelistview;import Android.content.context;import Android.util.attributeset;import Android.view.motionevent;import Android.view.view;import Android.widget.listview;import Android.widget.Scroller; Import Android.widget.toast;public class Slidelistview extends ListView {private Scroller scroller;private int downx; private int downy;private int movex;private int movey;private int downposition;private int Upposition;private Boolean dele Open = false;private View slidelistitem;private int lastpos = -1;/** * Constructor */public Slidelistview (context context, Attribu Teset attrs, int defstyleattr) {Super (context, attrs, defstyleattr); init (context);} Public Slidelistview (context context, AttributeSet Attrs) {Super (context, attrs); init (context);} Public Slidelistview (Context context) {super (context); init (context);} private void init (context context) {scroller = new scroller (context);} @Overridepublic boolean ontouchevent (motionevent ev) {final int action = ev.getaction (); switch (action){Case MotionEvent.ACTION_DOWN:downX = (int) ev.getx ();d owny = (int) ev.gety ();//Get pressed entry index downposition = pointtoposition (Downx, DownY); Slidelistitem = Getchildat (downposition); if (slidelistitem! = null) {slidelistitem.scrollto (0, 0);} If the press is not the current itemif (lastpos! =-1) {if (Lastpos! = downposition) {View Childat = Getchildat (Lastpos); Childat.scrollto (0, 0);}} Lastpos = downposition;break;case MotionEvent.ACTION_MOVE:moveX = (int) ev.getx (); movey = (int) ev.gety (); int upposition = Pointtoposition (MoveX, Movey), if (downposition = = upposition) {//is the same entry if ((Downx-movex) >) {if (Slidelistitem ! = null) {slidelistitem.scrollto (100, 0);}}} Break;case Motionevent.action_up:break;default:break;} return super.ontouchevent (EV);}}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Slide-Slip Removal Advanced (iv)