Android RecycleView 实现左滑上下分层示例代码(自定义功能)
程序员文章站
2023-11-19 21:37:46
由于项目原因,需要在很多地方需要左划删除,并在后期会在item中不定增加功能。网上很多左划删除的demo,但大多封装的不太彻底,所以就试着自己进行封装。
独立上下两层互补...
由于项目原因,需要在很多地方需要左划删除,并在后期会在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); } } }
代码如下:recycleslidedemo_jb51.rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 买小米手机,送国家领土哦