Android的RecyclerView基本应用
来源:互联网 发布:商业银行网络金融联盟 编辑:程序博客网 时间:2024/05/16 11:18
RecyclerView出现的时间已经有一段时间了,相应关注的同学应该都了解这个东西,下面我们谈两个问题:
1. RecyclerView相对于ListView有什么优势
2. RecyclerView的简单使用
先说第一个问题,都说RecyclerView很好用,那么它到底好用在哪里呢?
1. RecyclerView具有很强的自定义性,也就是我们可以定义RecyclerView每一行的Item个数,有点像是ListView和GridView的结合版。只不过他可以随意制定哪一行显示几个Item,够强大吧。
2. RecyclerView可以自定义Item的动画,比如说要做一个添加Item和删除Item的功能,你可以通过自定义动画实现添加删除操作时的一个动画缓冲。(这个功能我们暂且不谈,有兴趣的同学可以自己研究,或者等我的新分享)
3. 拥有内置的ViewHolder并且可以根据不同的Type类型加载不同的View。也就是说一个List列表可以有多种不同类型的View,只需一个RecyclerView就可以搞定。
上面的这三条决定了RecyclerView会逐渐取代ListView,那么RecyclerView如此强带我们该如何使用它呢?
首先导入v7的recyclerview包:
点击如下按钮
左边选择app,右边顶部选择Dependencies,然后我们看到右上角有个+,选择Library Dependencies搜索recyclerview,选择v7包下的那个:
点击后我们的Library就添加成功了,效果图如下:
下面我们就可以开始调用RecyclerView了。
布局部分跟实例化我们就不多说了,直接上设置Item个数的部分:
主要的部分注解已经写的很清楚了。
//设置布局管理为网格布局管理 final GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2); mRecyclerView.setLayoutManager(gridLayoutManager); //根据type类型设置每行的item数量 gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup(){ @Override public int getSpanSize(int position) { int type = mRecyclerView.getAdapter().getItemViewType(position); if(type == EvaluationModel.TYPE_ONE){ return gridLayoutManager.getSpanCount(); }else{ return 1; } } });
Adapter:
package com.max.recycler.adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.ViewGroup;import com.max.recycler.R;import com.max.recycler.adapter.viewholder.BaseViewHolder;import com.max.recycler.adapter.viewholder.TypeOneViewHolder;import com.max.recycler.adapter.viewholder.TypeThreeViewHolder;import com.max.recycler.adapter.viewholder.TypeTwoViewHolder;import com.max.recycler.model.EvaluationModel;import java.util.ArrayList;import java.util.List;/** * RecyclerView的Adapter */public class MyRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{ private LayoutInflater mInflater; private List<EvaluationModel> mList = new ArrayList<>(); public MyRecyclerAdapter(Context mContext){ mInflater = LayoutInflater.from(mContext); } public void addList(List<EvaluationModel> list){ mList.addAll(list); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //根据viewType的类型判断返回不同的ViewHolder布局 switch (viewType){ case EvaluationModel.TYPE_ONE: return new TypeOneViewHolder(mInflater.inflate(R.layout.viewholder_one,parent,false)); case EvaluationModel.TYPE_TWO: return new TypeTwoViewHolder(mInflater.inflate(R.layout.viewholder_two,parent,false)); case EvaluationModel.TYPE_THREE: return new TypeThreeViewHolder(mInflater.inflate(R.layout.viewholder_three,parent,false)); } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //根据postion获取item数据半丁到ViewHolder EvaluationModel model = mList.get(position); //强制转换为BaseViewHolder,调用bindViewHolder方法绑定数据 ((BaseViewHolder)holder).bindViewHolder(model); } @Override public int getItemViewType(int position) { return mList.get(position).mType; } @Override public int getItemCount() { return mList.size(); }}
效果图如下:
Demo下载
- Android的RecyclerView基本应用
- Android recyclerView的应用
- Android RecyclerView的基本使用
- Android RecyclerView 的基本使用
- Android RecyclerView的基本用法
- Android RecyclerView 的基本使用
- 【Android】Android中的RecyclerView的基本使用
- Android RecyclerView 的基本使用之GridView
- Android RecyclerView 的基本使用--瀑布流
- Android控件之RecyclerView的基本使用
- Android中RecyclerView的基本用法
- Android 控件 RecyclerView 的基本使用
- 【Android开发】RecyclerView的基本使用
- Android组件之RecyclerView的基本使用
- Android RecyclerView适配器的基本工作流程
- Android控件RecyclerView的基本用法
- Android RecyclerView基本使用
- Android Material风格的应用(二)--RecyclerView
- Spring配置文件自动提示导入法
- h1、h2、h3标签及strong标签对页面seo的影响
- 基于NLM的插值算法
- 最长递增子序列(包含路径记录)
- Missing com.sun.jdmk:jmxtools:jar:1.2.1
- Android的RecyclerView基本应用
- VS运行时一闪而过的问题
- 2016.12.03
- poj3177 tarjan双联通缩点
- css学习之一使用自定义字体
- Python学习记录day6
- pputy远程登录linux自动掉线解决
- 内部链接十二条网页黄金规则
- How To Ask Question