万能适配器(一)
程序员文章站
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的列表显示,是不是很简单呢?关于这个万能适配器更多玩法请看我的后续博客~~