史上最强RecyclerView封装,泛型、反射、注解3大终极技能齐出

封装后的效果,比如写一个NewAdapter@LayoutId(id = R.layout.item)public class NewsAdapter extends CommonAdapter<String>{ @DataSource List<String> list = Arrays.asList("我","是","大","帅","哥&q
摘要由CSDN通过智能技术生成

封装后的效果,比如写一个NewAdapter

@LayoutId(id = R.layout.item)
public class NewsAdapter extends CommonAdapter<String>{

    @DataSource
    List<String> list = Arrays.asList("","","","","","","","","");

    @BindView(id = R.id.imageView)
    ImageView imageView;
    @BindView(id = R.id.textView)
    TextView textView;

    @Override
    void onBind(String s) {
        textView.setText(s);
    }
}

我们需要写的代码量已经是少的可怜了


做的封装点:

泛型:(首先我们约束了数据参数是List)然后可以去除掉getItemCount和每次bind中都要在List中取数据的操作

反射、注解:反射拿到所有Field,并且拿到所有Field的注解,为我们省去了FVB操作;拿到类上的注解,为什么省去了create的操作

使用了通用的ViewHolder,里面没有任何东西


全部代码(所谓难者不会,会者不难,泛型反射注解很简单,可以这些堆砌起来,并且我做了一定的性能优化,而且我没写注释,萌新读者可能就 不是很看得懂了)

CommonAdapter

package com.example.demo;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.demo.anno.BindView;
import com.example.demo.anno.DataSource;
import com.example.demo.anno.LayoutId;

import java.lang.reflect.Field;
import java.util.List;

public abstract class CommonAdapter<T> extends RecyclerView.Adapter<CommonAdapter.ViewHolder> {

    class ViewHolder extends RecyclerView.ViewHolder {
        ViewHolder(View itemView) {
            super(itemView);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(getClass().getAnnotation(LayoutId.class).id(), parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(CommonAdapter.ViewHolder holder, int position) {
        View view = holder.itemView;
        int len = bindViews.length;
        for (int i = 0; i < len; i ++) {
            BindView bindView = bindViews[i]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值