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

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

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

代码如下

http://download.csdn.net/detail/anwuzhe/9795729

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值