本文实例讲述了Android编程实现列表侧滑删除的方法。分享给大家供大家参考,具体如下:
<强>前言:强>今天突然想起来了列表的滑动删除功能,一些下拉刷新的框架也会带这个侧滑删除的功能,比如一些listview的和recycleview的刷新框架都有这个功能,我今天写这个博客的目的是如何不依赖这些框架也是实现侧滑删除,如果自己已经使用的列表框架没有侧滑删除怎么给单独加入侧滑删除功能。
<强>概括:强>我今天写的这个文章就是讲的是怎么单独给列表加入侧滑删除功能,不去为了侧滑删除而依赖一个列表框架,就是说如果需要的话可以简简单单的在自己的列表中加入这个侧滑删除的功能。
好了、下面开始正文吧…
首先给出自定义条目容器控件的代码:
里面的注释请好好看看,有助于你快速的看懂这个类的实现,并且实现你的自定义! !
公开课DragListItem LinearLayout{延伸 私人上下文mContext; 私人观点mHidenDragView; 私人LinearLayout mContentView;//将包裹实际的内容 私人LinearLayout mHidenLayout; 私人照片卷轴mScroller; 私人int mLastX mLastY; 私人int mDragOutWidth;//完全侧滑出来的距离 私人双mfraction=0.75;//触发自动侧滑的临界点 私人布尔isDrag=false; 公共DragListItem(上下文语境){ 超级(上下文); mContext=上下文; initView (); } 公共DragListItem(上下文语境,AttributeSet attrs) { 超级(上下文,attrs); mContext=上下文; initView (); } 私人空间initView () { setOrientation(水平);//合并进来整个列,在这里可以自己定义删除按钮的显示的布局,随便按照的喜好修改都行 mHidenDragView=视图。充气(mContext出来。hide_drag_item,); mContentView=(LinearLayout) mHidenDragView.findViewById (R.id.show_content_view); mHidenLayout=(LinearLayout) mHidenDragView.findViewById (R.id.hide_view); mScroller=new照片卷轴(mContext);//将隐藏的删除布局的宽度赋值给边界的值,根据自己的需要可以任意的修改 mDragOutWidth=dip2px (mContext, 120); } 公共静态int dip2px(上下文背景下,浮动dpValue) { 最后的浮动比例=context.getResources () .getDisplayMetrics () .density; 返回(int) (dpValue *规模+ 0.5 f); }/* * *根据传递进来的事件,在此进行侧滑逻辑的判断,从而实现侧滑时删除按钮滑出的效果功能 */公共空间> & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比; & lt;合并xmlns: android=" http://schemas.android.com/apk/res/android " android: layout_width=" match_parent " android: layout_height=" match_parent " 面向android:=按怪薄北? & lt; !——实际显示的内容——比; LinearLayout & lt; android: id=癅 + id/show_content_view” android: layout_width=" match_parent " android: layout_height=" match_parent " 面向android:="水平" 比; & lt;/LinearLayout> & lt; !——隐藏在后面的删除——比; LinearLayout & lt; android: id=癅 + id/hide_view” android: layout_width=" 120 dp” android: layout_height=" match_parent " android:背景=" @android:颜色/holo_red_dark” 面向android:="水平"比; & lt; TextView android: id=癅 + id/hide_delete” android: layout_width=" 0 dp” android: layout_height=" wrap_content " android: layout_gravity="中心" android: layout_weight=" 1 " android:重力="中心" android:文本="删除” android: textSize=" 20 sp/比; & lt;/LinearLayout> & lt;/merge> >之前好了,这个自定义的控件的代码和布局文件已经提供给你了,原理我也已经说完了,就是靠这个自定义的控件实现的侧滑删除效果。
下面就简单的以列表视图作为示例,给大家演示一下这个控件的简单用法:(<强> 强>)
@Override 公众视线getView (int位置、视图convertView ViewGroup父){ 最后ViewHolder ViewHolder; DragListItem DragListItem=(DragListItem) convertView; 如果(dragListItem==null) { 视图查看=layoutInflater.inflate(出来。list_item_drag,家长,假); dragListItem=new dragListItem (mContext); dragListItem.setContentView(查看); viewHolder=new viewHolder (dragListItem); dragListItem.setTag (viewHolder); 其他}{ viewHolder=(viewHolder) dragListItem.getTag (); } dragListItem.rollBack (); dragListItem。setOnClickListener(新View.OnClickListener(){//给条目添加点击事件 @Override 公共空间onClick(查看v) { } }); viewHolder.hideItem。setOnClickListener(新View.OnClickListener(){//给隐藏的布局设置点击事件比如点击删除功能 @Override 公共空间onClick(查看v) { 吐司。makeText (mContext,“删除”,Toast.LENGTH_SHORT),告诉(); } }); 返回dragListItem; }Android编程实现列表侧滑删除的方法详解