当前位置: 移动技术网 > IT编程>移动开发>Android > Android RecycleView 实现左滑上下分层示例代码(自定义功能)

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

由于项目原因,需要在很多地方需要左划删除,并在后期会在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);
  }
 }
}

代码如下:

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网