android L新控件RecyclerView具体解释DeMo
简介
在谷歌的官方网站上,我们可以看到,它是此演示文稿:RecyclerView
is
a more advanced and flexible version of ListView
.
This widget is a container for large sets of views that can be recycled and scrolled very efficiently. Use the RecyclerView
widget
when you have lists with elements that change dynamically.
RecyclerView比listview更先进更灵活,对于非常多的视图它就是一个容器,能够有效的重用和滚动。当数据动态变化的时候请使用它。
RecyclerView
is easy to use, because it provides:
- A layout manager for positioning items
- Default animations for common item operations
- You also have the flexibility to define custom layout managers and animations for this widget.
RecyclerView使用起来非常方便由于它提供:
它为item的定位提供一个layoutmanager
为item的操作提供一个缺省的animations
您还能够灵活地定义这个小部件的自己定义布局管理器和动画
To use the RecyclerView
widget,
you have to specify an adapter and a layout manager. To create an adapter, you extend the RecyclerView.Adapter
class.
The details of the implementation depend on the specifics of your dataset and the type of views. For more information, see the examples below.
为了使用RecyclerVIew,你必须指定一个adapter和一个layoutmanager。为了创建一个adapter,你必须得继承RecyclerView.Adapter,具体的实现方法取决与你的数据集和你视图的类型。
Demo介绍不同于官网
这里就介绍完了以下我们就要做自己的Demo了。
假设须要看官网的Demo那么请打开这里:官方Demo
这里既然是具体解释那么就要与官方的Demo有不同,好了看看我们要做的效果吧。
实现图片文字button的混排。
首先还是看我的project结构吧。
首先还是贴出我的main_acitivy.xml
- <?
- 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="match_parent"
- android:orientation="vertical" >
- <!-- A RecyclerView with some commonly used attributes -->
- <android.support.v7.widget.RecyclerView
- android:id="@+id/my_recycler_view"
- android:scrollbars="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent"/>
- </LinearLayout>
其它几个xml就不用贴了,非常easy的放了写TextVIew,ImgeView之类。
然后我们就来看看代码,首先是Bean里面的代码。
- package com.androidl.bob;
- /**
- * 实体包
- *
- * @author edsheng
- *
- */
- public class Bean {
- public static final int Y_TYPE = 0; //view类型0
- public static final int X_TYPE = 1; //view类型2
- public static final int Z_TYPE = 2;//view 类型3
- private int type;
- private String text;
- public Bean(int type, String text) {
- super();
- this.type = type;
- this.text = text;
- }
- public int getType() {
- return type;
- }
- public void setType(int type) {
- this.type = type;
- }
- public String getText() {
- return text;
- }
- public void setText(String text) {
- this.text = text;
- }
- }
然后是Adapter里面的代码:
- package com.androidl.bob;
- import java.util.List;
- import com.example.androidl.R;
- import android.support.v7.widget.RecyclerView;
- import android.support.v7.widget.RecyclerView.ViewHolder;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.Button;
- import android.widget.ImageButton;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- /**
- * Date : 2014/7/15
- *
- * @author edsheng
- *
- */
- public class RecycleAdapter extends RecyclerView.Adapter<ViewHolder> {
- private List<Bean> beans;
- public RecycleAdapter(List<Bean> beans) {
- super();
- this.beans = beans;
- }
- /**
- * 内部TextHoler
- *
- * @author edsheng
- *
- */
- public class TextHoler extends RecyclerView.ViewHolder {
- public TextView textView;
- public TextHoler(View textview) {
- super(textview);
- this.textView = (TextView) textview.findViewById(R.id.mytext);
- }
- }
- /**
- * iamgeHolder
- *
- * @author edsheng
- *
- */
- public class ImageHoler extends RecyclerView.ViewHolder {
- public ImageView Imageview;
- public ImageHoler(View textview) {
- super(textview);
- this.Imageview = (ImageView) textview.findViewById(R.id.myiamge);
- }
- }
- /**
- * 按钮的holder
- *
- * @author edsheng
- *
- */
- public class ButtonHolder extends RecyclerView.ViewHolder {
- public Button button;
- public ButtonHolder(View textview) {
- super(textview);
- this.button = (Button) textview.findViewById(R.id.mybutton);
- }
- }
- @Override
- public int getItemCount() {
- // TODO Auto-generated method stub
- return beans.size();
- }
- /**
- * 获取消息的类型
- */
- @Override
- public int getItemViewType(int position) {
- // TODO Auto-generated method stub
- return beans.get(position).getType();
- }
- /**
- * 创建VIewHolder
- */
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewtype) {
- // TODO Auto-generated method stub
- View v = null;
- ViewHolder holer = null;
- switch (viewtype) {
- case Bean.X_TYPE:
- v = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.recylce_item_x, null);
- holer = new TextHoler(v);
- break;
- case Bean.Y_TYPE:
- v = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.recylce_item_y, null);
- holer = new ButtonHolder(v);
- break;
- case Bean.Z_TYPE:
- v = LayoutInflater.from(parent.getContext()).inflate(
- R.layout.recylce_item_z, null);
- holer = new ImageHoler(v);
- break;
- }
- return holer;
- }
- /**
- * 绑定viewholder
- */
- @Override
- public void onBindViewHolder(ViewHolder holder, int position) {
- // TODO Auto-generated method stub
- switch (getItemViewType(position)) {
- case Bean.X_TYPE:
- TextHoler textholer = (TextHoler) holder;
- textholer.textView.setText(beans.get(position).getText());
- break;
- case Bean.Y_TYPE:
- ButtonHolder buttonHolder = (ButtonHolder) holder;
- buttonHolder.button.setText(beans.get(position).getText());
- break;
- case Bean.Z_TYPE:
- ImageHoler imageHoler = (ImageHoler) holder;
- // imageHoler.Imageview.setImageResource(android.R.drawable.checkbox_on_background);
- break;
- }
- }
- }
最后是activity的代码。
- package com.androidl.bob;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import com.example.androidl.R;
- public class Mainactivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main_activity);
- RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
- // // improve performance if you know that changes in content
- // // do not change the size of the RecyclerView
- // mRecyclerView.setHasFixedSize(true);
- //创建布局管理器
- LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
- mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
- mRecyclerView.setLayoutManager(mLayoutManager);
- //初始化数据
- List<Bean> myDataset = new ArrayList<Bean>();
- myDataset.add(new Bean(Bean.Z_TYPE, "图片"));
- myDataset.add(new Bean(Bean.X_TYPE, "文字"));
- myDataset.add(new Bean(Bean.Y_TYPE, "button"));
- myDataset.add(new Bean(Bean.Z_TYPE, "图片"));
- myDataset.add(new Bean(Bean.X_TYPE, "shit"));
- myDataset.add(new Bean(Bean.X_TYPE, "我擦"));
- myDataset.add(new Bean(Bean.Z_TYPE, "图片"));
- myDataset.add(new Bean(Bean.Y_TYPE, "button"));
- myDataset.add(new Bean(Bean.Y_TYPE, "button"));
- myDataset.add(new Bean(Bean.X_TYPE, "文字"));
- //创建Adapter
- RecycleAdapter mAdapter = new RecycleAdapter(myDataset);
- mRecyclerView.setAdapter(mAdapter);
- }
- }
Demo传送门:开始转移
版权声明:本文博主原创文章,博客,未经同意不得转载。
android L新控件RecyclerView具体解释DeMo的更多相关文章
- Android L新控件RecyclerView简介
Android L是android进化史上的里程碑,尽管还没有正式发布4.5或者5.0,但预览版也同样精彩. 这篇文章只是另外一篇博客的总结性翻译,能够读懂原文的,可以点开这个链接去阅读精彩的原文:h ...
- android L新控件RecyclerView详解与DeMo[转]
http://blog.csdn.net/codebob/article/details/37813801 在谷歌的官网我们可以看到它是这样介绍的: RecyclerView is a more a ...
- android L 新控件侧滑菜单DrawerLayout 使用教程
介绍 drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产 ...
- 【转】Android M新控件之FloatingActionButton,TextInputLayout,Snackbar,TabLayout的使用
Android M新控件之FloatingActionButton,TextInputLayout,Snackbar,TabLayout的使用 分类: Android UI2015-06-15 16: ...
- 【转】Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用
Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用 分类: Android UI ...
- Android其它新控件 (转)
原文出处:http://blog.csdn.net/lavor_zl/article/details/51312715 Android其它新控件是指非Android大版本更新时提出的新控件,也非谷歌I ...
- android design 新控件
转载请标明出处: http://blog.csdn.net/forezp/article/details/51873137 本文出自方志朋的博客 最近在研究android 开发的新控件,包括drawe ...
- Android新控件RecyclerView剖析
传智·没羽箭(传智播客北京校区Java学院高级讲师) 个人简单介绍:APKBUS专家之中的一个,黑马技术沙龙会长,在移动领域有多年的实际开发和研究经验.精通HTML5.Oracle.J2EE .Jav ...
- [转 载] android 谷歌 新控件(约束控件 )ConstraintLayout 扁平化布局
序 在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束的库. 简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束.何为约束,即控件 ...
随机推荐
- Python-方法重载的问题
定义一个父类,在写一个子类继承他,重载他的foo方法: class Father: def foo(self): print"I am father" class Son(Fath ...
- Nutch+HBase
Nutch+HBase 当我们为nutch的架构发愁的时候,nutch的开发人员送来了nutchbase.我一些简单的测试表明,在hadoop0.20.1和hbase0.20.2上,稍加修改可以运行起 ...
- C#函数参数传递解惑
C#语言函数参数的传递 就像C语言众多的后世子孙一样,C#的函数参数是非常讲究的.首先,参数必须写在函数名后面的括号里,这里我们有必要称其为形参.参数必须有一个参数名称和明确的类型声明.该参数名称 ...
- 推荐一套.NET文档处理组件Spire.Office
原文:推荐一套.NET文档处理组件Spire.Office 以前的项目中用到一点Word简单处理的功能(文字替换和转PDF格式),当时使用的是一套COM组件,必须在服务器上安装office环境.最近考 ...
- SVN的命令行操作
最近在进行svn二次开发,使用的是svnkit.看了很多svnkit的api,渐渐发现都是和SVN的命令行操作对应的.顺便研究一下svn的命名行操作. 1.将文件checkout到本地目录: 基本命令 ...
- 从Rational Rose 到IBM Rational Software Architect和IBM Rational Rhapsody
2014/10/27 RSA升级,重装,不知怎么搞的,不能添加某些图(比如,活动图),重试了几次都不行,在其它电脑上没有问题.后来把其它电脑上的workspace复制过来,问题攻克了,原来是works ...
- 算法学习 - 图的广度优先遍历(BFS) (C++)
广度优先遍历 广度优先遍历是非经常见和普遍的一种图的遍历方法了,除了BFS还有DFS也就是深度优先遍历方法.我在我下一篇博客里面会写. 遍历过程 相信每一个看这篇博客的人,都能看懂邻接链表存储图. 不 ...
- 用友CDM系统期初导入商品资料经验
1. 倒入商品资料,是导入表spkfk(商品档案表).spkfjc(商品总结存表),主要是将spkfk全部编码导入. 2. 导入客商资料,是导入表mchk(业务单位登记表).m ...
- HDU 3177 Crixalis's Equipment(贪婪)
主题链接:http://acm.hdu.edu.cn/showproblem.php? pid=3177 Problem Description Crixalis - Sand King used t ...
- uva297(quadtree)
给我们两棵quadtree的前序遍历,要我吗求原来32*32的矩阵有多少个位置是黑的 quardtree是将区域划分为相等的4个子空间,然后再递归划分这4个子空间,知道满足条件后终止划分 这题的终止条 ...