GitHub源码学习笔记之TableView(一)

本文介绍了从GitHub上克隆的一个开源TableView项目,该项目使用多个RecyclerView实现数据联动和滑动联动。作者首先概述了TableView的基本架构,然后详细解析了从MainActivity到MainFragment的源码流程,特别关注了TableViewModel、TableViewAdapter以及它们与RecyclerView的关系。文章以逐步分析的方式,揭示了TableView的绘制原理,展示了作者对源码的深入理解和解析。
摘要由CSDN通过智能技术生成

写在前面:

最近发现一个很酷的开源项目,正好自己也打算写一个TableView,但是。。。写代码哪有抄代码爽!所以我决定来学习一下大佬的代码(先贴出来Github地址---->TableView

学习第一步,先看基本架构图:

按照图上的解释,TableView的实现方式是多个RecyclerView组合的结果,多个RecyclerView在TableView的统一架构下实现数据联动、滑动联动。至于为什么选择使用多个RecyclerView来实现的,原作者给出的理由是RecyclerView自带资源回收机制,并且非常高效,直接使用可以节省非常大的开发成本。

 

第二步:clone项目到本地

我将代码从github上克隆到本地,开始运行并分析源码。

这是运行效果:

可以看出来它的功能是非常强大的吧,整行、整列、单个选择都OJBK,而且全部支持自定义样式。。。

首先是从MainActivity开始看吧:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager()
                    .beginTransaction()
                    .add(
                            R.id.activity_container
                            , new MainFragment()
                            , MainFragment.class.getSimpleName()
                    ).commit();
        }
    }
}

从代码上看就是这样的非常简单,在activity中使用了一个Fragment,接下来看MainFragment中干了什么:

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle
            savedInstanceState) {
        View layout = inflater.inflate(R.layout.fragment_main, container, false);
        
        //。。。省略了部分代码。。。

        //获取到TableView
        mTableView = layout.findViewById(R.id.tableview);

        initializeTable
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值