一、加入JAR包

第一感觉这个东东,好复杂,没ListView来的快,方便

在项目中加入android-support-v7-recyclerview.jar包

这个包在extras\android\support\v7\recyclerview\libs这个目录下。
在studio中加入依赖

//添加依赖包
compile 'com.android.support:recyclerview-v7:+

二、在布局文件中加入RecyclerView。

<?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:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.liunan.recyclerviewstudy.MainActivity"> <android.support.v7.widget.RecyclerView
android:id="@+id/main_recylist"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>

三在Activtiy中初始化

package com.liunan.recyclerviewstudy;

import android.app.Activity;
import android.graphics.drawable.GradientDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager; import java.util.ArrayList;
import java.util.List; public class MainActivity extends Activity { private RecyclerView mRecyclerView; private List<String> mDataList ; private MyAdapter myAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData(); } /**
* 初始化
*/
private void initView() {
//找到这个Listview
mRecyclerView = (RecyclerView) findViewById(R.id.main_recylist);
//设置线性管理器
mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); } /**
* 初始化数据
*/
private void initData() { mDataList = new ArrayList<String>();
for (int i=0;i<50;i++){
mDataList.add("内容 - "+i);
}
/*
设置适配器
*/
myAdapter = new MyAdapter(mDataList);
mRecyclerView.setAdapter(myAdapter);
} }

三设置Adapter与Item

这个Adapter要继承RecyclerView.Adapter

package com.liunan.recyclerviewstudy;

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import java.util.List; /**
* RecyclerView适配器
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mDataList; public MyAdapter(List<String> list) {
mDataList = list;
} @Override
public int getItemCount() {
// 返回数据集合大小
return mDataList == null ? 0 : mDataList.size();
} @Override
public void onBindViewHolder(ViewHolder holder, int position) { //获取这个TextView TextView tv= holder.mTvTitle; tv.setText(mDataList.get(position));
} @Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.main_listview, parent, false));
} public class ViewHolder extends RecyclerView.ViewHolder { private TextView mTvTitle; public ViewHolder(View itemView) {
super(itemView);
mTvTitle = (TextView) itemView.findViewById(R.id.item_tv); } } }

item

<?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="wrap_content"> <TextView
android:clickable="true"
android:textSize="18sp"
android:id="@+id/item_tv"
android:layout_width="200dp"
android:layout_height="50dp"
android:background="#ff0"
android:text="测试"/> </LinearLayout>

运行效果

四更改为GridView

在Activity中将

//设置线性管理器
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

更改为

//设置表格管理器
mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));

效果

五使用瀑布式的方式

同样更改上面的地方
//设置瀑布式,交错
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));

更改adapter中onBindViewHolder方法

     @Override
public void onBindViewHolder(ViewHolder holder, int position) { //获取这个TextView TextView tv= holder.mTvTitle; // 获取布局参数 LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tv.getLayoutParams(); //根据数据的位置设置不同的高度与背景色
if(position%2==0){
//设置背景色
tv.setBackgroundColor(Color.parseColor("#3300ff00"));
//设置高度
lp.height=100;
}else{
tv.setBackgroundColor(Color.parseColor("#3300ffff"));
lp.height=50;
}
tv.setLayoutParams(lp);
tv.setText(mDataList.get(position));
}

效果

默认的分割线没有实现要自己实现RecyclerView.ItemDecoration

												

安卓学习-- RecyclerView简单入门的更多相关文章

  1. Quartz学习——Quartz简单入门Demo(二)

    要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去. 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两 ...

  2. LESS 学习记录(简单入门)

    什么是 LESS LESS是一种动态样式语言,属于 CSS 预处理语言的一种.它使用类似 CSS 的语法,但是 赋予了动态语言的特性,比如变量.继承.运算.函数等,方便 CSS 的编写和维护. 使用 ...

  3. gulp学习笔记--简单入门

    一.准备工作 1.gulp是基于nodeJS的前端构建工具,所以全局安装nodeJS 2.利用npm全局安装gulp. npm install -g gulp 3.在项目根目录下新建文件package ...

  4. Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

    一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...

  5. MyBatis学习总结(一)简单入门案例

    MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...

  6. springboot 学习之路 1(简单入门)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  7. ECharts.js学习(一) 简单入门

    EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart   这个是Visual Studio里的自带控件,使用比 ...

  8. SpringMVC学习笔记之---简单入门

    SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...

  9. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

随机推荐

  1. visual studio 2015.3 downloads

    https://www.visualstudio.com/zh-hans/downloads/ visual studio 2015.3 downloads http://download.micro ...

  2. Android流量控制——列表页面

    1.最简单的模式: 设计: 1.将页码值传给服务器,让服务器返回对应的页码数据 2.数据缓存:只缓存第一页数据. 好处: 1.实现简单.无脑 坏处: 1.浪费流量,如果用户一直在等某个人发送消息的话. ...

  3. C#模拟键盘输入(一)

    主要使用了Windows API 实现,你可以在你C盘下的system32文件夹中找到user32.dll,函数的说明在MSDN都有,只需要拿名字去搜一下就行 根据窗口的类名和窗口名称获取窗口句柄,成 ...

  4. css异常

    1.0 样式的引用顺序不对会导致样式显示不正常.个人推荐:把别人写好的样式引用在最前面,自己写的放在后面. 2.0 UC手机浏览器 UC手机浏览器在识别到页面文字很多的情况下会自动放大字体优化阅读体验 ...

  5. 自己写的一个简单的jQuery提示插件

    代码: /** * 2014年11月13日 * 提示插件 */ (function ($) { $.fn.tips = function (text) { var divtipsstyle = &qu ...

  6. RabbitMQ入门教程——路由(Routing)

    绑定( Bindings)   之前的文章中我们已经创建过bindings,代码如下:         channel.QueueBind(queue: queueName, exchange: EX ...

  7. 关于C#基础

    前几天帮人做个社交网站,还是用的控件方式,不过学习了ajax和一般处理程序ashx后,也用在了里面一些,今天回来继续写博客.继续上次总结下基础知识,学的内容多,总结的可能比较杂乱,分条总结为平时能自己 ...

  8. Qt的tablewidget行列头自适应宽度

    Qt构造一个TableWidget后,窗口最大化后,列头默认不能自适应宽度,研究了一下,Qt提供了两种方式来处理这个问题,如下:   1. 使用horizontalHeader()->setRe ...

  9. Javascript权威指南

    一.数字写法 3.14 2345.789 .333333333333333333 6.02e23 // 6.02 × 10 23 1.4738223E-32 // 1.4738223 × 10 −32 ...

  10. iOS阶段学习第18天笔记(Plist-Archiver-归档与解归档操作)

    iOS学习(OC语言)知识点整理 一.归档与解归档的操作 1)归档是一个过程,将一个或多个对象存储起来,以便以后可以还原,包括将对象存入文件,以后再读取 将数据对象归档成plist文件 2)plist ...