热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android自定义RecycleView左滑上下分层示例代码

为了满足项目需求,需要在多个场景中实现左滑删除功能,并且后续可能在列表项中增加其他功能。虽然网络上有很多左滑删除的示例,但大多数封装不够完善。因此,我们尝试自己封装一个更加灵活和通用的解决方案。

在项目开发过程中,经常需要在多个界面实现左滑删除功能,并且未来可能会在列表项中增加更多功能。尽管网上有很多左滑删除的示例代码,但大多数封装不够彻底。因此,我们决定自己封装一个更加灵活和通用的解决方案。

该方案实现了上下两层互不干扰的效果,能够满足不同列表项的左滑需求。底部功能项(如删除、收藏等)可以动态添加。

8517f0246575e376e6f57c95604f7ba4.png

### 独立Adapter的操作方式

**思路**:通过反射创建ViewHolder,并确保数据操作通过回调函数传递给Activity处理。

public RCommonSlideAdapter(Object object, List datas, int layoutId, Class clazz, SlideItemHolder handle) {
    // 在onCreateViewHolder中通过反射创建holder
    Constructor constructor2 = mClazz.getConstructor(View.class);
    holder = constructor2.newInstance(v);
}

### 上下分层实现

**思路**:创建底部XML布局,然后通过addView将顶部视图插入,并由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);
((ViewHolderClass.SlideViewHolder) holder).mRlSlidContent.getLayoutParams().width = getScreenWidth(parent.getContext());

### 独立功能项实现

**思路**:在XML布局中不断添加新的功能项,并在回调函数中对每个按钮进行处理,支持动态添加。


    

### ViewHolder类

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);
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也欢迎大家提出宝贵意见。


推荐阅读
author-avatar
手机用户2502863567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有