移动开发技术2:RecyclerView控件的使用

移动开发技术2:RecyclerView控件的使用

RecyclerView控件简介

这是一个非常方便且使用广泛的控件,仅使用RecyclerView控件即可完成ListView,GridView,瀑布流三种效果;更重要的是,它支持自定义布局方式。

ListView效果:

在这里插入图片描述
GridView和瀑布流的效果还在制作中,待完善

RecyclerView控件使用

对于RecyclerView控件的使用,其实是有套路的。
首先是数据(Data),然后是适配器,接着是对应的控件;
放到本次要首先完成的ListView,实际要做的就是:
创建模拟数据→创建适配器→把数据给适配器→把适配器给控件,让控件去调用。
对于RecyclerView,会多出一个步骤,就是设置布局管理器,这步很重要,如果你忘记了,将不显示内容,即使你适配器有给,你数据有给。
那么问题又来了,为什么要这个布局管理器呢?我的ListView里并没有这个东西呀
这个布局管理器,LayoutManager,说白了就是用来控制布局的,摆成什么样子呢,就由它控制。
比如说你要像ListView成一个列表,那么你给RecyclerView设置一个LinearLayoutManager,它就会像ListView一样显示内容,如果说你想显示成GridView一样,那么来一个GridlLayoutMnager,它就会显示成GrildView一样的效果。

Part1.菜单的创建和设置

效果示意:
在这里插入图片描述在这里插入图片描述
这一部分的实现是为了实现切换不同的RecyclerView展示效果(虽然目前暂时只完成了list view的垂直标准展示)
实现起来相对简单,UI方面创建一个menu.xml添加需要的标签(id&title)即可; 逻辑实现上只需要重写onOptionsItemSelected方法,并使用一个switch-case语句处理菜单的点击事件即可。具体可以在代码仓库中看到,这里不做赘述。

Part2.ListView的实现

根据我们上述的思路,我们一步步来实现。

创建模拟数据

首先在Java包下新建两个类,ItemBean用于储存模拟数据(方便起见不使用get/set方法),Datas类用于创建模拟数据集合;然后在main里写一个用于创建模拟数据的initData方法,使用for循环即可创建数据对象。

创建适配器

首先创建一个继承自RecyclerView.Adapter的ListViewAdapter和一个继承自RecyclerView.ViewHolder的InnerHolder
然后是adapter中的几个需要重写的重要方法:
①onCreateViewHolder:用于创建条目View
这个方法呢,是用来创建item的,用一个ViewHolder包装着,已经处理了复用的问题,所以不用像ListView的适配器那样,设置到tag里,自己处理复用。
在这个方法里传进的条目其实就是view的界面,所以它只需要两步:拿到view,创建InnerHolder
②onBindViewHolder:这个方法用于绑定holder,一般用来设置数据
这个方法呢,是用来绑定数据的,这里的holder,就是我们前面创建的那个viewholder。position有了,view也有了,那就可以从数据集合里拿出数据设置到view上了呀。
③getItemCount:用于返回条目个数
获取item 的个数,一般来说,我们返回数据集合的长度,但是也有特殊情况,比如说,你在数据集合的基础上,加了头尾,插入了其他的数据,这样子你的item个数应该是总数才对。

把数据给适配器、把适配器给控件

这里最重要的是记得给出布局管理器,给出下面代码,相信懂得都懂

    /**
     * 这个方法用于模拟数据
     */
    private void initData() {
        //创建模拟数据

        //创建数据集合
        mData = new ArrayList<>();

        for (int i = 0; i < Datas.icons.length; i++){
            //创建数据对象
            ItemBean data = new ItemBean();
            data.icon = Datas.icons[i];
            data.title = "我是第"+i+"个条目";
            //添加到集合中
            mData.add(data);
        }

        //RecyclerView需要设置样式(布局管理器)
        LinearLayoutManager layoutManager = new LinearLayoutManager(this);

        mList.setLayoutManager(layoutManager);

        //创建适配器
        ListViewAdapter adapter = new ListViewAdapter(mData);
        //设置到recycler view中去
        mList.setAdapter(adapter);
    }
ListView实现效果展示

可以滑动~
在这里插入图片描述
在这里插入图片描述

代码仓库
/AndroidProgram1_Wechat.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值