android RecyclerView

本文详细介绍了RecyclerView的概念、使用步骤、数据更新及动画系统。RecyclerView作为ListView的升级版,提供了更高效的性能和丰富的布局管理器,如线性布局和网格布局。文章还讲解了自定义适配器的方法、设置条目间距、添加点击事件以及数据更新后的UI刷新技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述:

(一)、概念:RecyclerView是什么? 

 RecyclerView是support.v7包中的新组件,它是ListView的升级版。

如何导入?

        在Android Studio开发工具的build.gradle(Module:app)中的dependencies下添加一句:

compile ‘com.android.support:recyclerview-v7:23.0.1’,然后同步就可以导入了。然后,在main.xml配置文件中写入:<android.support.v7.widget.RecyclerView/>并配置相关属性,就可以使用了。

二、Recycler的使用步骤?

(一)、自定义适配器

1、自定义适配器必须继承RecyclerView. Adapter<T>,泛型类型使用自定义适配器中自定义的ViewHolder类(此类必须继承RecyclerView.ViewHolder)

例子如下:

public class CustomAdapter extends RecyclerView.Adapter<CustomaAdapter.ViewHolder>{

        //自定义ViewHolder类

        public static class ViewHolder extends RecyclerView.ViewHolder{

       }

        // 重写以下三个方法

        onCreateViewHolder(ViewGroup parent,int viewType)

        onBindViewHolder(ViewHolder holder,int position)

        getItemCount()

}

(二)、Recycler初始化并设置属性

1、通过findViewById()来初始化;

2、动态设置recyclerview的layoutmanager

举例如下:

1)、线性布局管理器:

// 如果可以确定每个item的高度是固定的,设置这个选项可以提高性能

  recyclerView_main.setHasFixedSize(true);

  // 设置一个垂直方向的layout manager

  int orientation = LinearLayoutManager.VERTICAL;

  LinearLayoutManager linearLayoutManager = new LinearLayoutManager( mContext, orientation, false);

//设置水平滚动

   recyclerView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL)

2)、网格布局管理器:

    GridLayoutManager gridLayoutManager = new GridLayoutManager(mContext, 3);

     gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup(){

         public int getSpanSize(int position){

             if(position%2==0){

                 return 3;

            }

            return 1;

        }

     });

 // 设置布局管理器

  recyclerView_main.setLayoutManager(gridLayoutManager);

  adapter = new MyAdapter(this, totalList, recyclerView_main);

  recyclerView_main.setAdapter(adapter);

  recyclerView_main.setItemAnimator(new DefaultItemAnimator());

3、设置条目的间距

addItemDecoration(new ItemDecoration(){

public void getItemOffsets(){}})  

4、添加点击事件

可以在自定义的适配器中添加一个接口:

  public interface OnChildClickListener{

      void onChildClick(View view,int position,String data);

}

三、CRUD数据后,刷新UI界面:

最基本的ListView刷新的方法:notifyDataSetChanged()

添加一条数据:notifyItemInserted(position);

添加多条数据:notifyItemRangeInserted(size,collection.size())

移除一条数据:notifyItemRemoved(position)

移除多条数据:notifyItemRangeRemoved(positionStart, itemCount);

更新一条数据:notifyItemChanged(position)

更新一批数据:notifyItemRangeChanged(positionStart, itemCount);

四、动画系统

   用recyclerView的setItemAnimator()方法设置动画

   具体实现方式为:复制DefaultItemAnimator类,并做修改,改成自己需要的类,这个类中的主要方法有:

   animateRemove(final ViewHolder holder);  准备删除动画

   animateAdd(final ViewHolder holder);   准备添加动画

   animateRemoveImpl(final ViewHolder holder): 执行删除动画

   animateAddImpl(final ViewHolder holder):执行添加动画

   setAddDuration(time)  添加动画延时时长

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值