Android5.0新控件RecyclerView使用

RecyclerView

RecyclerView介绍

​ Android5.0中新添加的用来取代ListView的控件,灵活性与可替代性比ListView更好。原理与ListView类似,都是仅仅维护少量的View并且可以展示大量的数据集。但RecyclerView只管回收和复用View,其他可以自己设置,高度解耦(可通过设置LayoutManager实现ListView,GirdView,瀑布流等效果)。

使用两种方式简化了数据的展示和处理
  • 使用LayoutManager来确定每一个item的排列方式

  • 为增加和删除项目提供默认的动画效果

核心api

a.控制其显示的方式,我们可以通过布局管理器LayoutManager

​ 1.  LinearLayoutManager 线性管理器,支持横向、纵向。

​ 2. GridLayoutManager 网格布局管理器

​ 3. StaggeredGridLayoutManager 瀑布式布局管理器

b.控制Item间的间隔(可绘制),我们可以通过ItemDecoration

c.控制Item增删的动画,我们可以通过ItemAnimator

RecyclerView的使用

  • 添加依赖:
compile 'com.android.support:recyclerview-v7:23.4.0'
  • 在布局中引入RecyclerView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
  • 创建类继承RecyclerView的Adapter,按提示重写onCreateViewHolder(),onBindViewHolder(),getItemCount(),手动创建类继承RecyclerView.ViewHolder。
package com.rosenray.recyclerviewdemo;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
 * Created by RosenRay on 2017/1/1.
 * 项目名 Demo
 * 类名   MyRecyclerViewAdapter
 * 描述:
 */

public class MyRecyclerViewAdapter extends RecyclerView.Adapter {
    /**
     * 创建ViewHolder
     */
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(parent.getContext(), R.layout.item, null);
        return new MyViewHolder(view);
    }

    /**
     * 对ViewHolder里的控件赋值
     */
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyViewHolder viewHolder = (MyViewHolder) holder;
        viewHolder.setData(position);
    }

    /**
     * 条目数量
     */
    @Override
    public int getItemCount() {
        return 50;
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView tv;
        public MyViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.tv);
        }
        public void setData(int position) {
            tv.setText("第"+position+"个");
        }
    }
}
  • 给RecyclerView设置LayoutManager
//创建线性布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//指定方向为竖直方向
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        rv.setLayoutManager(linearLayoutManager);
  • 设置适配器
rv.setAdapter(new MyRecyclerViewAdapter());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值