在build.gradle文件加入以下代码

 compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.android.support:recyclerview-v7:21.0.3'

item类型同样的情况

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"> <android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"/>
</RelativeLayout>

页面代码

public class OneActivity extends Activity {
private RecyclerView mRecyclerView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_one); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));//这里用线性显示 相似于listview
// mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));//这里用线性宫格显示 相似于grid view
// mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, OrientationHelper.VERTICAL));//这里用线性宫格显示 相似于瀑布流
mRecyclerView.setAdapter(new RecyclerViewAdapter(this)); } //RecyclerView适配器
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private LayoutInflater mLayoutInflater;
private String[] mCityName; public RecyclerViewAdapter(Context mContext) {
this.mContext = mContext;
mLayoutInflater = LayoutInflater.from(mContext);
mCityName = mContext.getResources().getStringArray(R.array.city_name);
} //创建新ViewHolder,被LayoutManager所调用
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new RecyclerViewViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false));
} //将数据与界面进行绑定的操作
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((RecyclerViewViewHolder) holder).mTextView.setText(mCityName[position]);
} //获取数据的数量
@Override
public int getItemCount() {
return mCityName == null ? 0 : mCityName.length;
} //自己定义的ViewHolder,持有每一个Item的的全部界面元素
public class RecyclerViewViewHolder extends RecyclerView.ViewHolder {
TextView mTextView; public RecyclerViewViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(R.id.tv_city);
mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.show(mContext, getPosition() + "");
}
});
}
}
}
}

效果图:

item类型不同的情况

设配器代码

//RecyclerView适配器
public class MultipleRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context mContext;
private LayoutInflater mLayoutInflater; public static enum ITEM_TYPE {
ITEM_TYPE_IMAGE, ITEM_TYPE_TEXT
} public MultipleRecyclerViewAdapter(Context mContext) {
this.mContext = mContext;
mLayoutInflater = LayoutInflater.from(mContext);
} //创建新ViewHolder。被LayoutManager所调用
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ITEM_TYPE.ITEM_TYPE_TEXT.ordinal()) {
return new TextViewViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false));
} else {
return new ImageViewViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false));
}
} //将数据与界面进行绑定的操作
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
} //获取数据的数量
@Override
public int getItemCount() {
return 10;
} //Item类型
@Override
public int getItemViewType(int position) {
return position % 2 == 0 ? ITEM_TYPE.ITEM_TYPE_TEXT.ordinal() : ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal();
} //ItemHolder类型一
public class TextViewViewHolder extends RecyclerView.ViewHolder {
TextView mTextView; public TextViewViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(R.id.tv_city);
}
} //ItemHolder类型二
public class ImageViewViewHolder extends RecyclerView.ViewHolder {
ImageView mImageView; public ImageViewViewHolder(View itemView) {
super(itemView);
mImageView = (ImageView) itemView.findViewById(R.id.iv_city);
}
} }

效果图:

最新文章

  1. 源代码管理工具(上)-SVN基本使用
  2. 关于Cookie和Session的优缺点
  3. 【转载】协同过滤 &amp; Spark机器学习实战
  4. IP地址查询API的C#实现
  5. Html5的DeviceOrientation特性
  6. shell中(),[]和[[]]的区别
  7. JS 基础事件的用法
  8. C语言-07其它相关
  9. PHP文件类型检查类-比较全的
  10. C语言中符号格式说明
  11. OpenGL 的空间变换(下):空间变换
  12. hdu1242 Rescue bfs+优先队列
  13. Linux centos系统安装后的基本配置,Linux命令
  14. Linux——模拟实现一个简单的shell(带重定向)
  15. 《linux 用户管理》- useradd/userdel/usermod/groupadd/who/w
  16. 尼康G镜头与D镜头的差别
  17. go slice和数组的区别
  18. Java7的新特性
  19. iOS企业开发In House ipa发布流程
  20. Pandas重建索引

热门文章

  1. chrome 下载插件包及离线安装 附 Advanced Rest Client 下载
  2. Cocos2d-JS 实现将TiledMap中的每个 tile 变成物理精灵的方法
  3. MHA脚本master_ip_failover.pl(三)
  4. HDU——2112HDU Today(SPFA+简单Hash或map+前向星)
  5. BZOJ 1829 [Usaco2010 Mar]starc星际争霸 ——半平面交
  6. Count on a tree(bzoj 2588)
  7. tyvj 1061 Mobile Service
  8. 洛谷P3143 [USACO16OPEN]钻石收藏家Diamond Collector
  9. linux的cpu性能评估
  10. jQuery插件封装系列(一)—— 金额录入框