参考文章</br>
https://www.jianshu.com/p/f0b28e26ff0e
最近在公司做的主要项目都是对外 SDK 的开发,对界面的开发做得算是比较的少了。为了不对界面生疏,有时候也还会重新看看界面的一些实现方式。
Android开发中UI界面离不开列表。从早期的ListView,到现在常用的RecyclerView。都是实现里表的控件。现在ListView应该算是用得比较少了,就重要来回顾一下RecyclerView怎么使用。
依赖RecyclerView库
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta05'
编写 Adapter
简单的例子就在 Adapter 中创建内部类 ViewHolder。内容比较简单,直接看Adapter代码吧。
public class RecyclerTestAdapter extends RecyclerView.Adapter<RecyclerTestAdapter.VH> {
private List<String> data;
public void setData(List<String> data) {
this.data = data;
}
@NonNull
@Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item_rv, parent,false);
return new VH(view);
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
holder.mTvItem.setText(data.get(position));
}
@Override
public int getItemCount() {
return data != null ? data.size() : 0;
}
class VH extends RecyclerView.ViewHolder{
public TextView mTvItem;
public VH(@NonNull View itemView) {
super(itemView);
mTvItem = itemView.findViewById(R.id.tv_item);
}
}
}
在创建自定义的Adapter的时候,主要需要复写 onCreateViewHolder 、 onBindViewHolder 、 getItemCount 。
调用
最后编写好 Adapter 之后,就是使用了。RecyclerView和ListView的使用还是不一样的,老样子程序员直接看代码。
LinearLayoutManager layoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
RecyclerTestAdapter recyclerTestAdapter = new RecyclerTestAdapter();
recyclerView.setAdapter(recyclerTestAdapter);
ArrayList<String> datas = new ArrayList<>();
for (int i = 0; i < 20; i++) {
datas.add("第" + i);
}
recyclerTestAdapter.setData(datas);
recyclerTestAdapter.notifyDataSetChanged();
RecyclerView 相对 ListView 来说多出了一个 LayoutManager 。一个布局管理器,这个就是决定了列表的布局样式。
LinearLayoutManager : 线性布局管理器,和之前的 ListView 样式类似。为什么说类似,因为LinearLayoutmanager能实现的功能比ListView 要多,但是他们都是线性之类的样式。
GridLayouManager : 网格布局,其实LinearLayoutManager 配置好之后也可以实现网格布局的样式。
StaggeredGridLayoutManager : 分散式列表布局, 通俗来说就是可以实现瀑布流,可以实现item的不同高度的网格样式。
LayoutMananger 后续在整理文章总结一下,这里就不展开了。
总结
简单的看,其实RecyclerView 需要写的代码还是很多的。不慌,Google之所以出RecyclerView就是打造一个可以高度定制话的滚动控件。早期要是在使用ListView 的时候确实发现实现很多效果,是相当麻烦的。在项目中我们是需要对RecyclerView进行封装的。
网友评论