已经有好几天么有更新了,为考试准备了几天时间,现在考完了可以重操旧业了哈哈!
虽然之前已经写过这篇文章了,但是刚刚翻看了一下自己写过的旧文章,发现这篇写的非常的烂头-。=,而且里面有一个问题没有说的明白,所以决定重新写一下,也为了自己能够再熟悉一下。
下面进入正题:
可复用适配器基本原理
相信大家都是用过RecyclerView,作为一个很常用的数据展示类控件,大家都知道其最为核心的地方就在于适配器的编写了。(之后我会在博客中补充一篇RecyclerView的详细使用的博客),编写适配器的步骤主要分为以下几个步骤:
- 创建View布局
- 绑定View布局中的控件
- 添加数据
而在必要的时候,我们会通过ViewHolder去实现以上步骤。
其中1对应的是RecyclerView中的onCreateViewHolder方法,2对应的是RecyclerView的onBindViewHolder方法。当然RecyclerView还有一个getItemCount方法需要重写,但是不在本篇重点考虑中。
在以往我们每次写一个RecyclerView,都需要写一个适配器,其实就是因为我们每次的RecyclerView条目(也就是需要在RecyclerView中创建的布局)不同,因为是已经写死了的,所以无法更改。
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.rv_layout, parent, false);
return new MyViewHolder(view);
}
class static MyViewHolder extends RecyclerView.ViewHolder {
TextView mTv;
public MyViewHolder(View itemView) {
super(itemView);
mTv = itemView.findViewById(R.id.name);
}
}
例如上面,就是一个典型的RecyclerView适配器的写法。在适配器中,我们固定了布局id和控件类型,所以只能给一种适配。
假如说一个适配器类没有写死布局,那么他就可以对各种布局中的控件进行绑定(findViewById)了。这就是可复用适配器的