欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android RecycleView 实现左滑上下分层示例代码(自定义功能)

程序员文章站 2023-11-19 21:37:46
由于项目原因,需要在很多地方需要左划删除,并在后期会在item中不定增加功能。网上很多左划删除的demo,但大多封装的不太彻底,所以就试着自己进行封装。 独立上下两层互补...

由于项目原因,需要在很多地方需要左划删除,并在后期会在item中不定增加功能。网上很多左划删除的demo,但大多封装的不太彻底,所以就试着自己进行封装。

独立上下两层互补干扰,满足不同item的左划

底部功能项不定如(删除、收藏)

截图

Android RecycleView 实现左滑上下分层示例代码(自定义功能)

独立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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。