淘宝vlayout框架的使用及源码分析(一)

本文介绍了阿里开源的VLayout库,它是RecyclerView的扩展,通过LayoutHelper实现复杂页面布局。文章详细讲解了如何导入依赖,设置布局如线性布局,以及DelegateAdapter和LayoutHelper的使用。此外,还展示了混合布局的实现,提供了一拖多布局和混合布局的代码示例。
摘要由CSDN通过智能技术生成

VLayout是阿里开源的一个用于辅助RecyclerView的LayoutManager扩展库,通过使用LayoutHelper,可以实现一些负责的页面布局,这在阿里系的一些应用中都有体现。由于之前就针对VLayout做过研究,今天就写一篇文章做个总结吧。

一、vlayout如何使用?

(一)、 导入依赖库

compile ('com.alibaba.android:vlayout:1.2.8@aar') {
        transitive = true
}
(二)、初始化LayoutManager

    VLayout并没有去改变RecyclerView,而是在其基础上增加了辅助,所以使用步骤和RecyclerView差不多;都是需要绑定一个LayoutManager 和一个Adapter(如果对RecyclerView的用法不熟悉,请参考这篇文章RecyclerView详解)。 从VLayout的源码里可以看出它继承了RecyclerView的LayoutManager 和 Adapter, 自定义了VirtualLayoutManager 和 DelegateAdapter, 而VirtualLayoutManager又引入了LayoutHelper来实现各种布局的逻辑。所以首先是要绑定RecyclerView 和 VirtualLayoutManager.

final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
final VirtualLayoutManager layoutManager = new VirtualLayoutManager(this);

recyclerView.setLayoutManager(layoutManager);

(三)、设置布局

     这里以线性布局(LinearLayoutHelper)为例

 //设置线性布局
 LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
 linearLayoutHelper.setItemCount(10);
 linearLayoutHelper.setMarginBottom(100);

(四)、绑定Adapter

 //设置Adapter列表
 List<DelegateAdapter.Adapter> adapters = new LinkedList<>();
 adapters.add(new Adapter(this,linearLayoutHelper,4){
      @Override
      public void onBindViewHolder(MainViewHolder holder, int position) {
         super.onBindViewHolder(holder, position);
          ...
      }
  });

  //绑定delegateAdapter
  DelegateAdapter delegateAdapter = new DelegateAdapter(layoutManager);
  delegateAdapter.setAdapters(adapters);
  recyclerView.setAdapter(delegateAdapter);

另外,Vlayout还提供了recycled pool的功能;


(五)、DelegateAdapter的使用

 在开始使用之前,我们先来了解一下DelegateAdapter的作用。

DelegateAdapter是VLayout专门为LayoutHelper定制的Adapter,把装载有各种布局的LayoutHelper的Adapter放进DelegateAdapter里最后在RecyclerView.setAdapter(DelegateAdapter);就可以加载出复杂的布局(它不可以直接进行setLayoutHelpers的绑定,但是在它内
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值