1,概述 
RecyclerView可以完全代替ListView、GridView,整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现很多让人惊艳的效果,而且实现效果也是非常的简单。(随便百度了一段话)

2,直接进入使用篇:

首先,创建好project

我们要想使用它,就要添加相应的依赖库。右击app

点那个加号,找到

3,代码部分很简洁,只放了一个简单的绑定数据,后续的在学习,现在只是搞清楚这个布局如何呈现出了,然后能够呈现一定的内容~

代码部分有注释,就不说什么了。

package examples.ouc.com.learnrv;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; public class MainActivity extends AppCompatActivity { //用来代替ListView
private RecyclerView rv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
rv= new RecyclerView(this);
setContentView(rv); rv.setLayoutManager( new LinearLayoutManager(this)); rv.setAdapter(new RecyclerView.Adapter() { class ViewHolder extends RecyclerView.ViewHolder{ private TextView tv;
public ViewHolder(TextView itemView) {
super(itemView);
tv = itemView;
} public TextView getTv() {
return tv;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(new TextView(parent.getContext()));
} @Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder vh = (ViewHolder) holder;
vh.getTv().setText("item "+position);
} //huoqu ziduixiang shuliang
@Override
public int getItemCount() {
return 10;
}
});
}
}

MainActivity

4,上述书通过直接代码创建布局,然后载入,但是大部分时间,还是通过xml布局文件控制比较方便

我们首先将上面的代码进行一下重构,将adapter冲构成一个类,使代码更简洁~

这里面有很多注释之类的,是跟着极客学院学习时候留下的,不过没有影响,这只会影响我们的布局情况,并不会影响实现功能!

 package examples.ouc.com.learnrecylerview;

 import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; public class MainActivity extends AppCompatActivity { private RecyclerView rv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); rv = new RecyclerView(this);
setContentView(rv); //设置布局
//第一个参数获取布局,第二个参数表示数值还是水平,第三个是否反转
// rv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false)); //第一个参数获取布局,第二个表示有几列(默认是垂直方向)
rv.setLayoutManager(new GridLayoutManager(this,3)); //rv.setLayoutManager(new GridLayoutManager(this,3,LinearLayoutManager.HORIZONTAL,false));
//添加内容
rv.setAdapter(new MyAdapter());
} }

MainActivity

然后是MyAdapter

 package examples.ouc.com.learnrecylerview;

 import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import org.w3c.dom.Text; /**
* Created by Huskyboy on 2016/11/19.
*/
class MyAdapter extends RecyclerView.Adapter { class ViewHolder extends RecyclerView.ViewHolder {
//绑定子对象的视图
private View root;
private TextView tvTitle,tvContent; public ViewHolder(View root) {
super(root);
tvTitle = (TextView) root.findViewById(R.id.tvTitle);
tvContent = (TextView) root.findViewById(R.id.tvContent);
} public TextView getTvContent() {
return tvContent;
} public TextView getTvTitle() {
return tvTitle;
}
} //创建holder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//布局解析器
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.list_cell,null));
} //对holder的textView进行操作
@Override
//第一个参数是我们绑定的holder
//第二个是一个索引,我们的当前初始化的数据是哪一条
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //注意这里引入的ViewHolder类是我们上面创建的类,不要加错包
ViewHolder vh = (ViewHolder) holder; CellData cd = data[position];
vh.getTvTitle().setText(cd.title);
vh.getTvContent().setText(cd.content); } //获取RecylerView子对象数量
@Override
public int getItemCount() {
return data.length;
} private CellData[] data = new CellData[]{new CellData("iCyhuSky"," 1995-06-19"),
new CellData("news ", "Nice")};
}

MyAdapter.java

CellData.java

 package examples.ouc.com.learnrecylerview;

 /**
* Created by Huskyboy on 2016/11/19.
*/ public class CellData {
public CellData(String title, String content){
this.content = content;
this.title = title;
} public String title = "title";
public String content = "content";
}

CellData.java

布局文件

<?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"> <TextView
android:text="tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvTitle" /> <TextView
android:text="tvComtent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvContent" />
</LinearLayout>

list_cell.xml

5,这里注意一点是,在重写MyAdapter的时候,

 public int getItemCount() {
return data.length;
}

这个返回的数量一定要与Data数组相对应,否则会报错,无法加载布局!

最后附上CSDN上面一些大神的讲解

http://so.csdn.net/so/search/s.do?ref=toolbar&q=RecyclerView&ref=toolbar&q=RecyclerView

Android Studio2.2.2下RecyclerView的使用的更多相关文章

  1. Android Studio2.1.2 Java8环境下引用Java Library编译出错

    转载请注明出处:http://www.cnblogs.com/LT5505/p/5685242.html 问题:在Android Studio2.1.2+Java8的环境下,引用Java Librar ...

  2. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  3. Android studio2.2 ndk 错误 :format not a string literal and no format arguments!

    在Android Studio2.2 进行NDK编程,在对*char 字符串 进行日志输出时,报错: error: format not a string literal and no format  ...

  4. Android Studio2.x版本无法自动关联源码的解决方法

    Android Studio2.x版本无法自动关联源码的解决方法 在学习android开发过程中,对于一个不熟悉的类,阅读源码是一个很好的学习方式,使用andorid studio开发工具的SDK M ...

  5. Android Studio2.0 教程MAC版 -快捷键篇

    本文转至 Android Studio2.0 教程从入门到精通MAC版 - 提高篇 ( OPEN 开发经验库) 第二篇我们开发了一个Hello World应用,并介绍Android Sutdio的界面 ...

  6. android studio2.0出现的gradle问题,instant Run即时运行不了.

    android studio 2.0出现的gradle问题: instant Run即时运行不了.经历了几乎9个preView版本的AS2.0,终于迎来了正式版,然而晴天我的霹雳,好不容易装好的2.0 ...

  7. 【Android Studio安装部署系列】三十、从Android studio2.2.2升级到Android studio3.0之路

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android Studio 3.0的新功能 https://mp.weixin.qq.com/s/2XmVG4mKEDX6-bvZ ...

  8. Android Studio2.0 教程从入门到精通Windows版 - 入门篇

    http://www.open-open.com/lib/view/open1468121363300.html 本文转自:深度开源(open-open.com)原文标题:Android Studio ...

  9. 在Android Studio2.3中配置OpenCV4Android SDK

    在Android Studio2.3中配置OpenCV4Android SDK 一,OpenCV4Android下载地址 [2.4.11]http://onhdz331f.bkt.clouddn.co ...

随机推荐

  1. HTML5离线缓存

    参考文档:http://www.w3cschool.cc/html/html5-app-cache.html HTML5 应用程序缓存 又称离线缓存 ,即使断线了,刷新后也还是缓存了原来的页面,不会4 ...

  2. loadrunner实现excel文件导出操作

    项目中需要对“商品信息”进行查询及导出,但是loadrunner并不能录制到“保存”这一操作. 项目介绍:flex+Http协议: 不能录制的原因: 在我们点击了“导出”按钮后,服务端已经生成一份我们 ...

  3. 解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题

    最近一个项目中,使用号称下一代构建工具的Gradle构建项目. 使用中发现一个问题,Gradle从中央库下载的jar文件在系统的其它目录,使用gradle eclipse添加Eclipse支持时,ja ...

  4. Currency System in Geraldion

    standard output A magic island Geraldion, where Gerald lives, has its own currency system. It uses b ...

  5. Python笔记总结week3

    Set集合: 无序,不重复的序列 a. 创建 se = {"123,"456" } print(type(se)) #创建集合方式 s1 = se = {"12 ...

  6. 获取下拉框的文本值和value值

    http://www.cnblogs.com/djgs/p/3691979.html?utm_source=tuicool&utm_medium=referral 现在有一个Id为AreaId ...

  7. 框架 Onboard-引导页样式制作库

    设置背景图片或者背景movie,然后在它们之上生成数个ViewController,默认是顶部一张图片,下面是标题和详细介绍,最下面是按钮和pagegithub地址  https://github.c ...

  8. Java自由块(静态和非静态)(转载)

    java中的自由块分为两种: 静态块和非静态块 静态块: public class Test { 2 static int x = 10; 3 //静态块:静态块的执行时机是在class文件装载的时候 ...

  9. 手机客户端UI测试常见的测试点

    1.各种分辨率下,显示正常.现市场上主流的塞班V3系统手机为240*320.320*240.WM系统主要为240*320.320*480.Android系统主要为320*480,Iphone系统为32 ...

  10. 解析提高PHP执行效率的50个技巧

    1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手 ...