安卓学习-- RecyclerView简单入门
一、加入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简单入门的更多相关文章
- Quartz学习——Quartz简单入门Demo(二)
要学习Quartz框架,首先大概了解了Quartz的基本知识后,在通过简单的例子入门,一步一个脚印的走下去. 下面介绍Quartz入门的示例,由于Quartz的存储方式分为RAM和JDBC,分别对这两 ...
- LESS 学习记录(简单入门)
什么是 LESS LESS是一种动态样式语言,属于 CSS 预处理语言的一种.它使用类似 CSS 的语法,但是 赋予了动态语言的特性,比如变量.继承.运算.函数等,方便 CSS 的编写和维护. 使用 ...
- gulp学习笔记--简单入门
一.准备工作 1.gulp是基于nodeJS的前端构建工具,所以全局安装nodeJS 2.利用npm全局安装gulp. npm install -g gulp 3.在项目根目录下新建文件package ...
- Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门
一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...
- MyBatis学习总结(一)简单入门案例
MyBatis学习总结(一)简单入门案例 主要内容:本文主要通过对数据库中的use表进行增删改查总结mybatis的环境搭建和基本入门使用 一.需要的jar包: 1.核心包 2.依赖包 3.jdbc数 ...
- springboot 学习之路 1(简单入门)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- ECharts.js学习(一) 简单入门
EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart 这个是Visual Studio里的自带控件,使用比 ...
- SpringMVC学习笔记之---简单入门
SpringMVC简单入门 (一)什么是MVC设计模式 (1)model:模型数据,业务逻辑 (3)view:呈现模型,与用户进行交互 (3)controller:负责接收并处理请求,响应客户端 (二 ...
- Python 简单入门指北(二)
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...
随机推荐
- LINUX总结
LINUX总结 crazyacking 2016-02-26 主要对socket编程,多线程,定时器,条件变量总结 多线程篇 概念: 多线程就是允许一个进程内存存在多个控制权,实现多个线程并发执行. ...
- 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索
一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...
- c# 访问SQL Server 其他会话正在使用事务的上下文
这个异常是我第二次遇到! 从网上查找资料后知道了是由于数据库链接字符串是远程链接造成的,去掉链接服务器地址就行了,换成普通的链接字符串就可以了
- asp.net判断FileUpload选择的文件是否是图片
假如keleyi.aspx页面中有一个ID为fuHovertree的FileUpload控件,那么C#代码怎么判断fuHovertree选择的文件是否是图片呢? 代码如下: HttpPostedFil ...
- 利用chrome调试JavaScript代码
看见网上很多人问怎么用chrome调试JavaScript代码,我也对这个问题抱着疑问,但是没有找到一篇能用的中文文章(可能我的google有问题),也不知道怎么点出一篇E文的,感觉作者写得不错,所以 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(四)Packet
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- Android Volley框架的使用(5)
6. 设置超时时间 可以为请求设置超时时间.最大重试次数.重试时间增长因子等.其中new DefaultRetryPolicy()的第一个参数是超时时间,第二个参数是最大重试次数.第三个参数是重试时间 ...
- 使用ActivityGroup类显示多个Activity
有些情况下需要把一个Activity分割成几部分,如上半部分绘制图形,下半部分显示图表,这时就需要用到ActivityGroup. 定义一个类继承自ActivityGroup,Java文件如下: pa ...
- mysql 增、删、改、查 、函数、执行次序
这些是最基础的部分,若果这些不能满足你的需求,可以到http://www.w3school.com.cn中查询 增删改: 增 insert into<表名>(<列名列表>(如果 ...
- Java就业指导
想要成为合格的Java程序员或工程师到底需要具备哪些专业技能,面试者在面试之前到底需要准备哪些东西呢?本文陈列的这些内容既可以作为个人简历中的内容,也可以作为面试的时候跟面试官聊的东西,你可以把这些内 ...