RecyclerView简单使用介绍

RecyclerView简单使用介绍

RecyclerView 是 Android 5.0 版本中新添加的一个用来取代ListView的SDK,它相比ListView更加灵活方便,下面来介绍一下它的使用方法。

在这之前,我要声明的是:RecyclerView 是Support Library的一部分。所以只需要在app/build.gradle中添加以下依赖,便能立即使用:

compile 'com.android.support:recyclerview-v7:24.1.1'

先介绍RecyclerView两个比较重要的类:

  • Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器,作用是将数据与每一个item的界面进行绑定。
  • LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。回收或重用一个View的时候,LayoutManager会向适配器请求新的数据来替换旧的数据,这种机制避免了创建过多的View和频繁的调用findViewById方法(与ListView原理类似)。

目前SDK中提供了三种自带的LayoutManager:

  • LinearLayoutManager (线性布局)
  • GridLayoutManager (网格布局)
  • StaggeredGridLayoutManager(瀑布流网格布局)

RecyclerView 简单使用方法步骤:

1 创建 RecyclerView 布局和 Item 布局

RecyclerView 布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >

        </android.support.v7.widget.RecyclerView>
</ScrollView>

</LinearLayout>

Item布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:background="@color/colorWhite"
    android:paddingTop="10dp"
    android:layout_height="120dp">
    <ImageView
        android:layout_width="180dp"
        android:layout_height="120dp"
        android:id="@+id/chedaituan_image"
        android:src="@drawable/banner"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="vertical">
        <TextView
            android:id="@+id/text1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/colorBlack"
            android:textSize="20sp"
            android:text="RecyclerView使用方法"/>
        <TextView
            android:id="@+id/text2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/colorBlack"
            android:text="item"
            android:textSize="12sp"/>
        <TextView
            android:id="@+id/text3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/colorAccent"
            android:textSize="15sp"
            android:text="item"/>

    </LinearLayout>

</LinearLayout>

2 在 Activity 中获取该 RecyclerView ,并声明 LayoutManager 和 Adapter

    private RecyclerView recyclerView;
    private RecyclerView.LayoutManager layoutManager;
    private MyRecyclerAdapter myRecyclerAdapter;

3 创建适配器继承 RecyclerView.Adapter

 private class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolderCar>{

        //创建item的View,被LayoutManager所调用@Override
        public MyViewHolderCar onCreateViewHolder(ViewGroup parent, int viewType) {
            View view= LayoutInflater.from(getApplication()).inflate(R.layout.chedaituan_item_layout,parent,false);
            MyViewHolderCar myViewHolderCar=new MyViewHolderCar(view);
            return myViewHolderCar;
        }
//将数据与界面进行绑定的操作
        @Override
        public void onBindViewHolder(MyViewHolderCar holder, int position) {

            holder.imageView.setImageResource(mData_car.get(position).getImageId());
            holder.textView1.setText(mData_car.get(position).getTextView1());
            holder.textView2.setText(mData_car.get(position).getTextView2());
            holder.textView3.setText(mData_car.get(position).getTextView3());
        }
//获取数据的数量
        @Override
        public int getItemCount() {
            return mData_car.size();
        }
        //自定义的ViewHolder,持有每个Item的的所有界面元素
        class MyViewHolderCar extends RecyclerView.ViewHolder{

            ImageView imageView;
            TextView textView1,textView2,textView3;
            public MyViewHolderCar(View itemView) {
                super(itemView);
                imageView= (ImageView) itemView.findViewById(R.id.chedaituan_image);
                textView1= (TextView) itemView.findViewById(R.id.text1);
                textView3= (TextView) itemView.findViewById(R.id.text3);
                textView2= (TextView) itemView.findViewById(R.id.text2);
            }
        }
    }

4 获取数据源
5 生成适配器对象并绑定适配器,设置相应的布局

myRecyclerAdapter=new MyRecyclerAdapter();
recyclerView_car.setAdapter(myRecyclerAdapter);
//设置RecyclerView为线性布局
layoutManager_car=new LinearLayoutManager(getApplication());
recyclerView_car.setLayoutManager(layoutManager_car);

运行后截图如下:

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值