ListView 与 RecyclerView 你应该弄懂的都在这里了,安卓binder机制

本文深入探讨ListView的优化,如使用ViewHolder进行item复用,并介绍RecyclerView的基础用法,包括RecyclerViewAdapter和ViewHolder的规范化编写,以及在Activity中设置布局管理器的步骤。此外,还提到了RecyclerView的布局管理器,如LinearLayoutManager和GridLayoutManager。
摘要由CSDN通过智能技术生成
  • @param parent 父容器,根据具体的情况而定

  • @return item

*/

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null){

convertView = mInflater.inflate(R.layout.activity_detail,parent,false);

}

//对 item 进行复用,返回 convertView

return convertView;

}

}

ListView 的优化

可以看到,基本上每一个 item 都需要在 getView() 中加载,如果 item 的数量过多,就会产生性能问题,影响用户体验。这个时候我们就需要使用 ViewHolder(开发者自定义类),这是 ListViewAdapter 的内部类,它的代码如下:

/**

  • 作用:加载 子项 item 的布局

  • @param position item 的位置

  • @param convertView item 进行复用,避免一个 item 发生多次加载的情况

  • @param parent 父容器,根据具体的情况而定

  • @return item

*/

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if (convertView == null){

holder = new ViewHolder();

convertView = mInflater.inflate(R.layout.activity_detail,parent,false);

convertView.setTag(holder);

} else {

如果 convertView 不为空,直接进行复用

holder = (ViewHolder) convertView.getTag();

}

//对 item 进行复用,返回 convertView

return convertView;

}

//这是一个内部类

private class ViewHolder{

//获取 item 的控件都定义在这里

}

好了,关于 ListView 就到这里了,下面总结两个关键点:

  • 自定义 ListViewAdapter ,继承 BaseAdapter。

  • 自定义 ViewHolder 和 convertView 一起完成复用优化工作。

RecyclerView 相关



下面开始写 RecyclerView ,先把 RecyclerView 的关键点总结在这里。其实和 ListView 是差不多的,主要有两条:

  • RecyclerViewAdapter 继承 Recyclerview.Adapter ,其内部类 ViewHolder 继承 RecyclerView.ViewHolder。

  • 设置布局管理器,控制布局效果

RecyclerView 适配器

先看下面 RecyclerView 适配器的代码:

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

/**

  • 这个方法主要生成为每个Item inflater出一个View,但是该方法返回的是一个ViewHolder。

  • 该方法把View直接封装在ViewHolder中,然后我们面向的是ViewHolder这个实例,

  • 当然这个ViewHolder需要我们自己去编写。

  • @param parent

  • @param viewType

  • @return viewHolder

*/

@NonNull

@Override

public RecyclerViewAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

return null;

}

/**

  • 这个方法主要用于适配渲染数据到View中,

  • 方法提供给你了一viewHolder而不是原来的convertView

  • @param holder

  • @param position

*/

@Override

public void onBindViewHolder(@NonNull RecyclerViewAdapter.ViewHolder holder, int position) {

//在这里更新 UI

}

/**

  • @return 返回 item 的数量

*/

@Override

public int getItemCount() {

return 0;

}

public class ViewHolder extends RecyclerView.ViewHolder {

public ViewHolder(@NonNull View itemView) {

super(itemView);

}

}

}

从基础使用上看,我们明显可以看出,RecyclerView 相比 ListView 在基础使用上的区别主要有如下几点:

  • ViewHolder 的编写规范化了。

  • RecyclerView 复用 item 的工作 Google 全帮你搞定了,不需要再像 ListView 那样自己调用 setTag()。

  • RecyclerView 需要设置 KayoutManager

如何在 Activity 中使用 RecyclerView

接下来看一下如何在 Activity 中使用 RecyclerView :(ListView 大致相同)

//1、设置布局管理器

LinearLayoutManager manager = new LinearLayoutManager(this);

RecyclerView recyclerView = findViewById(R.id.detail_rv);

recyclerView.setLayoutManager(manager);

//2、设置适配器

RecyclerViewAdapter adapter = new RecyclerViewAdapter();

recyclerView.setAdapter(adapter);

RecyclerView 的布局管理器

关于 RecyclerView ,还得再说一下它的布局管理器,RecyclerView 提供了三种布局管理器可供选择:

  • LinerLayoutManager 以垂直或者水平列表方式展示

  • GridLayoutManager 以网格方式展示item
    erViewAdapter adapter = new RecyclerViewAdapter();

recyclerView.setAdapter(adapter);

RecyclerView 的布局管理器

关于 RecyclerView ,还得再说一下它的布局管理器,RecyclerView 提供了三种布局管理器可供选择:

  • LinerLayoutManager 以垂直或者水平列表方式展示

  • GridLayoutManager 以网格方式展示item

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值