Android 5.0特性(RecyclerView)

1,RecyclerView  介绍

 

  • android 5.0新控件。放到兼容包。可以运行低版本

  • RecyclerView是替换ListView与GridView,升级后的ListView.

2,RecyclerView   简单使用

【1】添加依赖

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

【2】创建布局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"

    android:layout_width="match_parent" android:layout_height="match_parent"

    tools:context="com.itheima.a002recyclerview.MainActivity">

    <android.support.v7.widget.RecyclerView

        android:id="@+id/rv"

        android:layout_width="match_parent"

        android:layout_height="match_parent">

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

</RelativeLayout>

【3】MainActivity下onCreate获取控件

  • 获取控件

   RecyclerView recyclerView = (RecyclerView) findViewById(R.id.rv);
  • 创建布局管理者

 

  RecyclerView.LayoutManager layoutManger = new LinearLayoutManager(this);

recyclerView.setLayoutManager(layoutManger);
  • 创建适配器

   

 MyAdapter adapter = new MyAdapter();

    recyclerView.setAdapter(adapter);

 

【4】创建适配器

  • 构造方法中初始化数据

  • 创建itme布局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    tools:context="com.itheima.a002recyclerview.MainActivity">

    <ImageView

        android:id="@+id/img"

        android:src="@mipmap/ic_launcher"

        android:layout_width="80dp"

        android:layout_height="80dp" />

    <TextView

        android:background="#FFF000"

        android:id="@+id/text"

        android:layout_toRightOf="@id/img"

        android:layout_width="match_parent"

        android:text="---"

        android:textSize="22sp"

        android:layout_height="wrap_content" />

<View

     android:visibility="gone"

     android:layout_alignParentBottom="true"

     android:background="#C80000"

     android:layout_width="match_parent"

     android:layout_height="1dp"/>

</RelativeLayout>

 

  • getItemCount, 设置条目数量

  • onCreateViewHolder, 初始化itme布局

  • onBindViewHolder, 设置数据

  • MyViewHolder 可以通过插件进行初始化必须继承 RecyclerView.ViewHolder


 

package com.xiaoshuai.a002recyclerview;

import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.widget.TextView;

import java.util.ArrayList;

import java.util.List;

import butterknife.BindView;

import butterknife.ButterKnife;





/**

* Created by Administrator on 2016/11/30.

*/

//是什么?是一堆  get方法 。由rv,lv,gv viewpager调用

// RecyclerView.Adapter封装了 getView优化

//条目的高度由什么决定 ?由内容的高度

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    //1.7 泛型自动推断

    private List<String> list = new ArrayList<>();





    public MyAdapter() {

        for (int i = 0; i < 30; i++) {

            list.add("经验值" + i);

        }

    }

    //条目数量

    @Override

    public int getItemCount() {

        return list.size();

    }





    //RecyclerView.ViewHolder是缓存条目控件

    @Override

    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        int itemId = R.layout.item;

       // View itemView=View.inflate(parent.getContext(),itemId,null);

        //1.条目布局

        //2.RecyclerView  传入给item参考宽度

        //3.是否把打气布局添加到父控件 true添加,报错 二次添加  false,不添加 仅参考宽度

        View itemView= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_cardview,parent,false);

        MyViewHolder myViewHolder=new MyViewHolder(itemView);

        return myViewHolder;

    }





    @Override

    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        MyViewHolder hd= (MyViewHolder) holder;

        //数据

        String item = list.get(position);

        hd.text.setText(item);

        //字段

    }

    static class MyViewHolder extends RecyclerView.ViewHolder{

        @BindView(R.id.img)

        ImageView img;

        @BindView(R.id.text)

        TextView text;

        @BindView(R.id.activity_main)

        RelativeLayout activityMain;

        public MyViewHolder(View itemView) {

            super(itemView);

            ButterKnife.bind(this, itemView);

        }

    }

}

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值