Android高级进阶

RecyclerView与ListView比较

2018-03-26  本文已影响930人  IT一书生

RecyclerView 概述

RecyclerView 集成自 ViewGroup 。RecyclerView是Android-support-V7版本中新增的一个Widgets,官方对于它的介绍是:RecyclerView是ListView的升级版本,更加先进和灵活。

Android L 之后,Google 提供了RecyclerView视图化控件,5.0之前如果想要使用的话,可以添加V7包以向下兼容,提供更全面的API和更灵活的布局管理。

RecyclerView 做了什么

RecyclerView 组成

机制:layoutmanager 从Recycle 中获取已经绑定数据的 Item 显示,并将不再需要的Item 丢给Recycler 回收;Adapter 负责生成新Item 并将其绑定好数据,供Recyle获取;Recycler 就是子 Item 的一个缓存池。

RecyclerView.LayoutManager -- 管理子View布局的一个组件

主要负责:布局子视图、滚动子视图在滚动过程中根据子视图在布局中所处的位置,决定何时添加子视图和删除子视图。
涉及到的API:

RecyclerView.Adapter 负责数据、Item的生成和数据的绑定

Adapter 有几个抽象方法需要子类实现:

RecyclerView.Recyler 负责 Item 的缓存

即提供新的,也回收旧的(强大就强大在View的循环回收利用)

相关方法

与Recycler相关:

RecyclerViewPool 相关:

RecyclerViw 与 listView 比较

adapter用法

class MyAdapter extends BaseAdapter {    
    ……    
    @Override    
    public View getView(int position, View convertView, ViewGroup parent) {    
       ViewHolder holder = null;    
        if (convertView == null) {    
            holder = new ViewHolder();    
            …… //初始化convertView和ViewHolder    
            convertView.setTag(holder);    
        } else {    
            holder = (ViewHolder) convertView.getTag();    
        }    
       ……    
    }    
}    
static class ViewHolder {    
   TextView txvTitle;    
} 
class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

       @Override
       public int getItemCount() {
           return 0;
       }

       @Override
       public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
           return null;
       }

       @Override
       public void onBindViewHolder(MyViewHolder holder, int position) {

       }

       class MyViewHolder extends RecyclerView.ViewHolder {
           //TODO 初始化控件   
           
           public MyViewHolder(View itemView) {
               super(itemView);
           }
       }
    }

最基础的adapter,应用中列表会有许多,有多少个列表就会有几个适配器,可以根据需求封装adapter,以方便使用。

上一篇下一篇

猜你喜欢

热点阅读