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

最新文章

  1. LeetCode Moving Average from Data Stream
  2. JavaWeb技术(一):JDBC简介
  3. jenkins使用deploy-plugin自动构建部署war包
  4. Cocos2d-x网络通信
  5. 【android】侧滑关闭activity
  6. DetectEncoding
  7. Android内存泄漏问题(一)
  8. tar、zip 、unzip 打包与压缩 (参考:http://pengyl.blog.51cto.com/5591604/1191197)
  9. win7配置简单的FTP服务器
  10. resolve &quot;Undefined attribute name&quot; warning for Angular &quot;ng-&quot; attributes in HTML files
  11. AW笔记本升级SSD,外接双屏中的一些注意事项
  12. 苹果应用商店AppStore审核中文指南
  13. java面试题(二)
  14. 【转】纯手工玩转 Nginx 日志
  15. spring boot 整合mybatis + swagger2
  16. 2017最新PHP初级经典面试题目汇总(下篇)
  17. 编译Twitter的Heron时一直报错&ldquo;heron/bazel_configure.py&quot;, line 25, in &lt;module&gt; import semver ImportError: No module named semver&rdquo;如何处理。
  18. B/S与C/S架构
  19. Ajax 模糊查询的简单实现
  20. openstack安装过程报错

热门文章

  1. 2018/3/4 Activiti教程之流程部署篇(与Springboot整合版)二
  2. Avito Code Challenge 2018 C
  3. SOJ 3531_Number Pyramids
  4. CCCC2017大区赛补完
  5. Linux系统备份还原工具3(使用Clonezilla/再生龙对硬盘进行镜像和克隆,类似于Ghost)
  6. Ubuntu 16.04修改显示字体大小(包括GNOME/Unity)
  7. HAProxy教程收集
  8. label显示不同颜色的字体
  9. VirtualMachineManager
  10. c#实现播放器的集中方式