RecyclerView用法(一)------展示多中类型Item数据
来源:互联网 发布:linux备份文件命令 编辑:程序博客网 时间:2024/06/03 12:55
一、多Item布局实现(MultipleItem)
如果之前你用过ListView实现过此功能,那么你一定对下面这两个方法并不陌生
@Override public int getItemViewType(int position) { return super.getItemViewType(position); } @Override public int getViewTypeCount() { return super.getViewTypeCount(); }
其中getItemViewType方法是用来获取当前项Item(position参数)是哪种类型的布局,getViewTypeCount方法是用来获取当前listview总共有多少种类型的布局。
如果你用RecyclerView,你会发现getViewTypeCount这个方法没有了,只有一个getItemViewType方法,用法和listview没有任何区别,这里要注意的就是这个函数onCreateViewHolder(ViewGroup parent, int viewType)这里的第二个参数就是View的类型,可以根据这个类型判断去创建不同item的ViewHolder。
public class MultipleItemAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public static enum ITEM_TYPE { ITEM_TYPE_IMAGE, ITEM_TYPE_TEXT } private final LayoutInflater mLayoutInflater; private final Context mContext; private String[] mTitles; public MultipleItemAdapter(Context context) { mTitles = context.getResources().getStringArray(R.array.titles); mContext = context; mLayoutInflater = LayoutInflater.from(context); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal()) { return new ImageViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false)); } else { return new TextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof TextViewHolder) { ((TextViewHolder) holder).mTextView.setText(mTitles[position]); } else if (holder instanceof ImageViewHolder) { ((ImageViewHolder) holder).mTextView.setText(mTitles[position]); } } @Override public int getItemViewType(int position) { return position % 2 == 0 ? ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal() : ITEM_TYPE.ITEM_TYPE_TEXT.ordinal(); } @Override public int getItemCount() { return mTitles == null ? 0 : mTitles.length; } public static class TextViewHolder extends RecyclerView.ViewHolder { @InjectView(R.id.text_view) TextView mTextView; TextViewHolder(View view) { super(view); ButterKnife.inject(this, view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("TextViewHolder", "onClick--> position = " + getPosition()); } }); } } public static class ImageViewHolder extends RecyclerView.ViewHolder { @InjectView(R.id.text_view) TextView mTextView; @InjectView(R.id.image_view) ImageView mImageView; ImageViewHolder(View view) { super(view); ButterKnife.inject(this, view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("ImageViewHolder", "onClick--> position = " + getPosition()); } }); } } }
怎么样,是不是很简单,没错,就是这么简单,但是只要会了这个多Item,那么你就可以做出很多效果了,比如HeaderView和BottomView也是可以通过这种方式来实现的。(HeaderView Adapter)
原文:http://frank-zhu.github.io/android/2015/02/25/android-recyclerview-part-2/
2 0
- RecyclerView用法(一)------展示多中类型Item数据
- RecyclerView用法(一)------展示单一类型Item数据
- recyclerview展示数据(MVP)
- Recyclerview的多类型item入门
- OkHttp+RecyclerView多条目展示数据
- Android----------RecyclerView数据展示
- RecyclerView进阶(一)item分割线
- RecyclerView的Item多种类型的选择和不同样式展示之利用框架方法实现
- RecyclerView 在有限的窗口中展示大量数据集
- RecyclerView中ItemDecoration的简单使用(一)--设置item的padding
- <Android 基础(三十五)> RecyclerView多类型Item的正确实现姿势
- 【Android编程架构】多Item类型的RecyclerView替代scrollView
- RecyclerView加载多类型item 实现淘宝首页布局
- RecyclerView+OkHttp展示网络数据
- RecyclerView加载数据进行展示
- RecyclerView瀑布流展示数据
- RecyclerView多条目展示
- RecyclerView多条目展示
- hdoj 3341 Lost's revenge 【AC自动机 + 变进制状态压缩dp】
- java 中的Exception RuntimeException 区别
- 比赛
- Visio Premium 2010密钥+破解激活方法
- 类中的const成员
- RecyclerView用法(一)------展示多中类型Item数据
- 【Some】【文档】个人文档
- Eclipse几个常用的快捷键
- 提到线程你能想到什么?
- android学习之路--里氏替换原则
- 每日三个笑话-201510116
- android学习之路——java中substring的用法
- Bubble Sort
- 简单动画