recycleView在界面展示上类似于ListView,但不同于ListView的是它展示的每一个item类型可以不一样:

   RecycleAdapter类:

public class RecycleAdapter extends RecyclerView.Adapter<ViewHolder> {
private List<Bean> beans;
public RecycleAdapter(List<Bean> beans) {
super();
this.beans = beans;
}
//不同类型写不同的ViewHolder
public class TextHolder extends RecyclerView.ViewHolder {
public TextView textView;
public TextHolder(View textView) {
super(textView);
this.textView = (TextView) textView.findViewById(R.id.mytext);
}
}
public class ButtonHolder extends RecyclerView.ViewHolder {
public Button button;

public ButtonHolder(View textview) {
super(textview);
this.button = (Button) textview.findViewById(R.id.mybutton);
}
}
public class ImageHoler extends RecyclerView.ViewHolder {
public ImageView Imageview;

public ImageHoler(View textview) {
super(textview);
this.Imageview = (ImageView) textview.findViewById(R.id.myiamge);
}
}

@Override
public int getItemCount() {
return beans.size();
}
@Override
public int getItemViewType(int position) {
return beans.get(position).getType();//获取当前Position的type
};
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
switch (getItemViewType(position)) {
case Bean.X_TYPE://针对不同类型的view绑定不同的Holder
TextHolder textHolder = (TextHolder) holder;
textHolder.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_off_background);
break;
default:
break;
}
}

@SuppressLint("InflateParams")
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewtype) {
View v = null;
ViewHolder holder = null;
switch (viewtype) {
case Bean.X_TYPE://针对不同的View类型,inflater不同的布局
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recylce_item_x, null);
holder = new TextHolder(v);
break;
case Bean.Y_TYPE:
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recylce_item_y, null);
holder = new ButtonHolder(v);
break;
case Bean.Z_TYPE:
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.recylce_item_z, null);
holder = new ImageHoler(v);
break;

default:
break;
}
return holder;
}
}

bean类:

public class Bean {
public static final int Y_TYPE = 0;// view类型1

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;
}
}

MainActivity:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
// 创建布局管理器
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, "按钮"));
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, "按钮"));
myDataset.add(new Bean(Bean.Y_TYPE, "按钮"));
myDataset.add(new Bean(Bean.X_TYPE, "文字"));
// 创建Adpater
RecycleAdapter mAdapter = new RecycleAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
}
}

activity_main的布局:

<?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>

其余的布局省略,都是简单的几个textview imageview

RecycleView的简单应用的更多相关文章

  1. android RecycleView Adapter简单封装

    早些时候我们使用系统提供个的BaseAdapter的时候为了满足大家的需要,我们总会对BaseAdapter做一层上层的封装,然后对于实际业务我们只需要关心getView里面的View即可,是代码可读 ...

  2. 安卓控件RecycleView的简单使用

    RecycleView的使用 目录 RecycleView的使用 技术概述 技术详述 遇到问题和解决 总结 参考文献 技术概述 RecycleView是谷歌官方对ListView的改进(并不是替代), ...

  3. Android新特性之CardView的简单使用

    Android新特性之CardView的简单使用 我们学习下Android5.0的新增加的控件CardView.首先我们了解一下CardView的基本使用,然后结合RecycleView使用CardV ...

  4. Android--带你一点点封装项目 MVP+BaseActivity+Retrofit+Dagger+RxJava(一)

    1,其实早就想把这些东西给封装封装的,一直没有时间,今天刚好项目进入到测试阶段了,Bug同事在哪儿测试的飞起,但发现提bug的尽然是我(得意脸),然后上午把ios的包测试了一下,顺便把服务器给测挂了( ...

  5. Android--RecyclerView的封装使用

    1,用了很长一段时间的RecyclerView,在项目中用的频率也越来越频繁(因为踩得坑也越来越多了),或过头来看,感觉一直在写RecyclerView.Adapter中的三个方法和一个内部类,感觉很 ...

  6. android recycleView 简单使用二---分割线

    转自:https://www.jianshu.com/p/b46a4ff7c10a RecyclerView没有像之前ListView提供divider属性,而是提供了方法 recyclerView. ...

  7. 安卓Recycleview简单的网格布局-初学者的关键点

    导包 def supportVersion = '28.0.0' 定义常量我的sdk版本为28 implementation "com.android.support:recyclervie ...

  8. 一个简单的Android小实例分享,包含recycleView与recyclerView嵌套

    先上图: 1.首页 2.第二页 3.第三页 项目目录: 代码不多,本人太懒,就不贴了 项目地址:

  9. RecycleView 实现多布局

    最近的一个新需求,简单描述下吧: 需求: 目标样式如图所示,我们需要根据需求动态添加网关和设备. 目标有了下面就是怎么实现了.首先我们选用的是RecycleView 那么主要目标就成了 在recycl ...

随机推荐

  1. hdu 1828 Picture(线段树,扫描线)

    A number of rectangular posters, photographs and other pictures of the same shape are pasted on a wa ...

  2. socketserver模块使用 & websocket

    socketserver: socketserver可用于实现并发通信. socketserver 模块简化了编写网络服务程序的任务:同时 SocketServer 模块也是 Python标准库中很多 ...

  3. Linux下汇编语言学习笔记26 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  4. Java高并发实战,锁的优化

    锁优化 这里的锁优化主要是指 JVM 对 synchronized 的优化. 自旋锁 互斥同步进入阻塞状态的开销都很大,应该尽量避免.在许多应用中,共享数据的锁定状态只会持续很短的一段时间.自旋锁的思 ...

  5. VMware配置从U盘启动

    很遗憾,VMware的BIOS不能识别USB启动设备,即使已经把USB设备连接上去. 解决这一问题的做法是直接添加硬盘,硬盘指向物理硬盘,即USB设置. 注意:Ubuntu下要设置这一功能需要使用su ...

  6. 条款二:最好使用c++转型操作符

    一.static_cast基本上拥有与c旧式转型相同的威力与意义,以及相同的限制,不能够移除表达式的常量性,const_cast负责这个功能 二.const_cast用来改变表达式中的常量性,如果将c ...

  7. Java这样学,Offer随便拿,学习方法和面试经验分享

    Java这样学,Offer随便拿,学习方法和面试经验分享 学习中:https://mp.weixin.qq.com/s/iSutLzqCiPMWwm_Rm_2oPw

  8. Eclipse中的Web项目自己主动部署到Tomcat以及怎样在Eclipse中使用My Eclipseproject

    我是一个新手学习Java,servlet和Jsp. 痛苦的是我时候一个.net程序猿,习惯了微软的VS IDE一切都是封装好的.傻瓜式的使用, 不须要关心内部实现. 悲催的是我看到资料都是My Ecl ...

  9. (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法

    (六)Net Core项目使用Controller之一 一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择 ...

  10. 基于百度AI人脸识别技术的Demo

    编写demo之前首先浏览官方API:http://ai.baidu.com/docs#/Face-API/top 下面是源码: package com.examsafety.test; import ...