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. Thinkphp5.0 的Model模型

    Thinkphp5.0 的Model模型 新建user模型User.php: <?php namespace app\index\model; use think\Model; class Us ...

  2. POJ 2186 tarjan+缩点 基础题

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 37111   Accepted: 15124 De ...

  3. 选择器的使用(target选择器)

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...

  4. Windows 10+Ubuntu 16.04在MBR分区上安装双系统之后启动菜单的System Setup选项提示:can't find command "fwsetup"

    背景: 硬盘分区方式:MBR 硬盘容量256,Windows 100,Ubuntu 156,其中主分区安装的是Windows,Ubuntu安装在逻辑分区上,文件系统为Ext4,整个Ubuntu就挂载在 ...

  5. 合并链表 —— 剑指Offer

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.     思路: 也在考虑能不能更优雅的代码写法,但是最后,还是两边都写一下,能增加代码清晰度. ...

  6. Django学习系列之django restframework

    曾几何时,Ajax已经统治了Web开发中的客户端,而REST成为web世界中最流行的架构风格(architecture style).所以我们的选择变得很简单:前端ajax访问后端的RESTful A ...

  7. Android插屏动画效果

    公司研发SDK,须要类似有米插屏的动画效果,研究了下,写了一个DEMO,凝视非常具体了. <span style="font-size:24px;">package c ...

  8. HDU 4950 Monster(公式)

    HDU 4950 Monster 题目链接 题意:给定怪兽血量h,你攻击力a.怪物回血力b,你攻击k次要歇息一次,问是否能杀死怪兽 思路:签到题,注意最后一下假设打死了怪,那么怪就不会回血了 思路: ...

  9. 字符串处理(正则表达式、NSScanner扫描、CoreParse解析器)-b

    搜索 在一个字符串中搜索子字符串 最灵活的方法 1 - (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptio ...

  10. Sping框架的IOC特性 悲观锁、乐观锁 Spring的AOP特性

    Sping框架的IOC特性 IOC(Inversion of Control):控制反转 以下以课程与老师的安排来介绍控制反转. 一个合理的课程编排系统应该围绕培训的内容为核心,而不应该以具体的培训老 ...