一个RecycleView的强大adapter

代码地址如下:
http://www.demodashi.com/demo/12218.html

前言

一般我们要在mainActivity中利用RecycleView展示一个列表数据的时候,adapter都是类似以下写法:

public class NameAdapter<T> extends RecyclerView.Adapter {

    protected Context mContext;
    protected View mLayoutView;
    protected List<T> mData;
    private ViewHolder mViewHolder;

    public NameAdapter(Context context, List<T> data) {
        this.mContext = context;
        this.mData = data;
    }


    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        mLayoutView = LayoutInflater.from(mContext).inflate(R.layout.item_layout, parent, false);
        mViewHolder = new ViewHolder(mLayoutView);
        return mViewHolder;
    }

    @Override
    public int getItemCount() {
        return mData == null ? 0 : mData.size();
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        mViewHolder = ((ViewHolder) holder);

        initData(position);
        setListener(position);
    }

    private void initData(int position){
        mViewHolder.mTvName.setText(mData.get(position).toString());
    }

    private void setListener(int position){

    }


    class ViewHolder extends RecyclerView.ViewHolder {

        TextView mTvName;

        public ViewHolder(View view) {
            super(view);
            mTvName = (TextView) view.findViewById(R.id.tv_name);
        }
    }
}

然后在mainActivity中调用如下:

mNameList= Arrays.asList("小明","小红","小芳","小花","小海","小林","小叶","小虎","小柔");

        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mNameAdapter = new NameAdapter<>(this, mNameList);
        mRecyclerView.setAdapter(mNameAdapter);

那么有什么方法能缩减NameAdapter中的代码,使我们在使用RecycleView进行列表数据展示的时候,把NameAdapter也的更简洁些呢,下面就给大家介绍一款adapter框架,相信在使用它后,将大大缩减NameAdapter的代码

1.配置

在projected的build.gradle中配置maven:

maven { url "https://jitpack.io" }

具体配置如下:

allprojects {
    repositories {
        google()
        jcenter()

        maven { url "https://jitpack.io" }
    }
}

在app module的build.gradle中添加依赖:

compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'

自此,配置结束.

2.写一个公共的adapter,名为ComAdapter,集成基本的初始化,加载动画等方法
public abstract class ComAdapter<T> extends BaseQuickAdapter<T, BaseViewHolder> {

    protected Context mContext;
    protected List<T>mData;
    protected int mItemViewId;//item布局id
    protected View mHeaderView;
    protected View mFooterView;

    public ComAdapter(int itemViewId,List<T>data,Context context) {
        super(itemViewId, data);
        this.mItemViewId=itemViewId;
        this.mContext=context;
        this.mData=data;
    }

    @Override
    protected void convert(BaseViewHolder viewHolder, T t) {
        initView(viewHolder,t);
        initData(viewHolder,t);
        setListener(viewHolder,t);
    }

    //以下代码见例子
    //......
3.自己写的NameAdapter继承于ComAdapter
public class NameAdapter<T>extends ComAdapter {

    private TextView mTvName;

    public NameAdapter(List<T> data, Context context){
        super(R.layout.item_layout,data,context);
    }

    @Override
    protected void initView(BaseViewHolder viewHolder, Object o) {
        mTvName=viewHolder.getView(R.id.tv_name);
    }

    //以下代码省略
    //......
4.在mainActivity中的使用

声明

   @BindView(R.id.recycler_view)
    RecyclerView mRecyclerView;

    private List<String>mNameList;
    private NameAdapter mNameAdapter;

初始化

        mNameList= Arrays.asList("小明","小红","小芳","小花","小海","小林","小叶","小虎","小柔");
        mNameAdapter=new NameAdapter(mNameList,mContext);//初始化NameAdapter
        mNameAdapter.setRecyclerManager(mRecyclerView);//设置RecyclerView特性
        mNameAdapter.addHeaderView(R.layout.item_header);//添加header
        mNameAdapter.addFooterView(R.layout.item_footer);//添加footer
        mNameAdapter.openLeftAnimation();//设置加载动画

item点击事件

        //item點擊事件
        mNameAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                Toast.makeText(MainActivity.this, "onItemLongClick" + position, Toast.LENGTH_SHORT).show();
            }
        });

item中子控件点击事件

 //子空控件点击事件
        mNameAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
            @Override
            public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
                Toast.makeText(MainActivity.this, "onItemLongClick" + mNameList.get(position), Toast.LENGTH_SHORT).show();
            }
        });
5.效果图

6.項目結構圖

一个RecycleView的强大adapter

代码地址如下:
http://www.demodashi.com/demo/12218.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值