由于项目原因,需要在很多地方需要左划删除,并在后期会在item中不定增加功能。网上很多左划删除的demo,但大多封装的不太彻底,所以就试着自己进行封装。
独立上下两层互补干扰,满足不同item的左划
底部功能项不定如(删除、收藏)
截图
独立adapter的操作方式
思路: public rcommonslideadapter(object object, list datas, int layoutid, class clazz, slideitemholder handle) {
在oncreateviewholder中通过反射创建holder,保证数据的操作通过回调函数,交给activity处理
constructor constructor2 = mclazz.getconstructor(view.class); holder = constructor2.newinstance(v);
上下分层
思路:创建底部xml布局,再通过addview插入顶部view,并交由activity处理,底部布局处理放在adapter中处理。
constructor constructor = viewholderclass.slideviewholder.class.getconstructor(view.class); holder = constructor.newinstance(v); view contentview = view.inflate(parent.getcontext(), mlayoutid, null); viewgroup.layoutparams params = new viewgroup.layoutparams(viewgroup.layoutparams.match_parent, viewgroup .layoutparams.wrap_content); ((viewholderclass.slideviewholder) holder).mrlslidcontent.addview(contentview, params); constructor constructor2 = mclazz.getconstructor(view.class); holder = constructor2.newinstance(v); ((viewholderclass.slideviewholder) holder).mrlslidcontent.getlayoutparams().width = getscreenwidth(parent.getcontext());
独立功能项
思路:在xml布局中,不断增加item。并再回调函数中,对每个按钮选择性处理,并可动态添加
<linearlayout android:id="@+id/lindelete" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_alignparentright="true" android:layout_centervertical="true" android:layout_torightof="@+id/rlslidcontent" android:orientation="vertical" > <imageview android:id="@+id/sliding_delete" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_horizontal" android:src="@drawable/icon_item_delete" /> </linearlayout>
public class viewholderclass { public static class slideviewholder extends recyclerview.viewholder { @bindview(r.id.sliding_delete) public imageview btn_delete; @bindview(r.id.rlslidcontent) public relativelayout mrlslidcontent; @bindview(r.id.linslidetitle) public linearlayout mlinslidetitle; @bindview(r.id.tvslidetitle) public textview mtvslidetitle; public slideviewholder(view view) { super(view); butterknife.bind(this, view); } } public static class shopcarviewholder extends slideviewholder { @bindview(r.id.itemtv) public textview mitemtv; public shopcarviewholder(view view) { super(view); } } }
代码如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论