RecycleView的基本使用方法

本文介绍了RecycleView相比ListView的优势,如内置ViewHolder优化、支持多种布局和动画效果。并详细阐述了如何在Android中使用RecycleView,包括设置LayoutManager、Adapter以及实现自定义的ViewHolder。通过实例展示了LinearLayoutManager、GridLayoutManager和StaggeredGridLayoutManager的用法,以及如何添加item分隔线和动画效果。
摘要由CSDN通过智能技术生成

为什么要使用RecycleView,而不再使用ListView

记得每一次在用ListView的时候,在Adapter中,总是需要我们自己去创建一个ViewHolder,去存储ListItem的布局,这么做的原因在于findViewById()是一个很耗时间的操作,所以我们需要一个静态的对象将layout过的控件给保存起来,下一次刷新这个item的时候,就不再需要调用findViewById去ViewTree中初始化控制,从而达到对ListView的优化效果。

而RecycleView则已经帮我们封闭好了这样一个ViewHolder的抽象类RecycleView.ViewHolder,而且是必须实现的一个接口,这说明在控制节省内存方面,RecycleView要比ListView做得要好,因为在ListView中,你不写ViewHolder也是可以的。

此外,ListView的设计是一个上下滑动的列表控制,而RecycleView则通过一个LayoutManager来实现多种布局的展现,包括纵向列表,横向Gallery,Grid布局,基于瀑布流等,可以说,之前通过ListView, GridView, ViewPager等实现的布局,现在用一个RecycleView就可以实现了。

再此外,现在的很多app,就算是使用ListView,也不仅仅是单纯地展现数据,都希望能够利用一些平滑的动画效果来提升用户体验,而RecycleView本身在对数据的增删上就添加了对动画的效果的的支持。
在RecyclerView中增加了以下的接口:

        public final void notifyItemInserted(int position) {
            mObservable.notifyItemRangeInserted(position, 1);
        }
        public final void notifyItemMoved(int fromPosition, int toPosition) {
            mObservable.notifyItemMoved(fromPosition, toPosition);
        }  

    public void setItemAnimator(ItemAnimator animator) {
        if (mItemAnimator != null) {
            mItemAnimator.endAnimations();
            mItemAnimator.setListener(null);
        }
        mItemAnimator = animator;
        if (mItemAnimator != null) {
            mItemAnimator.setListener(mItemAnimatorListener);
        }
    }       

综合种种,个人觉得,是很有必要掌握一下如何使用RecycleView的。

如何使用 RecycleView

RecycleView是Support-v7包中的组件,因此在Gradle中,我们要添加其对应的引用

dependencies {
    ...
    compile 'com.android.support:recyclerview-v7:23.1.0'
    ...
}</
为了重写RecycleView的ontouchevent方法,您需要创建一个继承自RecyclerView的自定义类,并覆盖其中的onTouchEvent方法。这样,您就可以在RecycleView上捕获触摸事件,并执行您想要的动作。 以下是一个示例,演示了如何创建一个自定义RecycleView类并重写其onTouchEvent方法来捕获触摸事件: ```java public class CustomRecyclerView extends RecyclerView { public CustomRecyclerView(Context context) { super(context); } public CustomRecyclerView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomRecyclerView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean onTouchEvent(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: // 处理按下事件 break; case MotionEvent.ACTION_MOVE: // 处理移动事件 break; case MotionEvent.ACTION_UP: // 处理抬起事件 break; } return super.onTouchEvent(e); } } ``` 在上述代码中,我们创建了一个继承自RecyclerView的CustomRecyclerView类,并覆盖了其onTouchEvent方法。在该方法中,我们使用switch语句来检测触摸事件的类型,并在不同情况下执行不同的动作。然后,我们返回父类实现的onTouchEvent方法,以确保RecycleView基本触点操作能够正常工作。 在您完成自定义RecyclerView类的编写之后,您可以像使用常规RecyclerView一样使用它。只需在XML布局中使用CustomRecyclerView标记,或在代码中通过实例化来使用它。重写RecyclerView的onTouchEvent方法后,您可以在其中执行自定义操作,例如捕捉手势、模拟滚动等等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值