欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

万能适配器(一)

程序员文章站 2024-02-22 12:07:34
...

本系列博客主要是带领大家一起学习下鸿洋大神的万能适配器,学习完这个万能适配器,以后就不用再费时间写ViewHolder,上拉下拉刷新等等重复多余的代码啦!
万能适配器Github地址

效果图
万能适配器(一)

1 导入依赖库

 compile 'com.zhy:base-rvadapter:3.0.3'  (针对RecyclerView)
compile 'com.zhy:base-adapter:3.0.3' (针对ListView)

2 自定义Adapter

public class MyAdapter extends CommonAdapter<String> {
    public MyAdapter(Context context, int layoutId, List<String> datas) {
        super(context, layoutId, datas);
    }

    @Override
    protected void convert(ViewHolder holder, String s, int position) {
        holder.setText(R.id.tv,s);
    }
}

对!你没有看错,Adapter里面的代码少得可怜,不用自己去写ViewHolder,作者已经帮你封装好了,直接通过convert方法去赋值即可,关于这个类有以下几点注意:

1 如果是单Item必须继承CommonAdapter,多Item继承MultiItemTypeAdapter

2 CommonAdapter后面的是泛型,一般项目中都会是一个Bean类,只是在此处方便显示用了String

3 convert中第二个参数表示的就是对应位置的元素,比如这里的s表示的其实就是datas.get(position),如果泛型不是String而是一个Bean,表示的就是position位置的Bean

4 holder.setText(R.id.tv,s)这句话的R.id,tv指的是item中View的Id,这里需要注意的是不要把Id填错了,别为一个Imageview设置了Text,这样的话程序就会崩溃

3 主界面代码

public class MainActivity extends AppCompatActivity {
    private List<String> list = new ArrayList<>();
    private MyAdapter myAdapter;
    private RecyclerView recyclerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recyclerView = (RecyclerView) findViewById(R.id.rc);
        list=initData();//初始化数据
        myAdapter = new MyAdapter(this,R.layout.item,list);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(myAdapter);

    }

    private List<String> initData() {
        for(int i=0;i<20;i++){
            list.add("第" + i + "个数据");
        }
        return list;
    }
}

RecyclerView要求比较高,必须得设置布局方向,不然的话就显示不出来,这就这几行代码就实现了一个RecyclerView的列表显示,是不是很简单呢?关于这个万能适配器更多玩法请看我的后续博客~~