RecyclerView使用详解(一)
来源:互联网 发布:淘宝sc证书怎么回事 编辑:程序博客网 时间:2024/05/18 15:26
RecyclerView使用详解(一)
16 Jan 2015一、前言
RecyclerView是谷歌V7包下新增的控件,用来替代ListView的使用,在RecyclerView标准化了ViewHolder类似于ListView中convertView用来做视图缓.
先来说说RecyclerView的有点就是,他可以通过设置LayoutManager来快速实现listview、gridview、瀑布流的效果,而且还可以设置横向和纵向显示,添加动画效果也非常简单(自带了ItemAnimation,可以设置加载和移除时的动画,方便做出各种动态浏览的效果),也是官方推荐使用的.以下是官方的说明:
RecyclerView is a more advanced and flexible version of ListView. This widget is a container for large sets of views that can be recycled and scrolled very efficiently. Use the RecyclerView widget when you have lists with elements that change dynamically. 简单说就是当你需要动态展示一组数据的时候就会需要用到它。
讲了这么多虚的,接下来我们看看在代码中怎么来实现.
二、实现
首先要用这个控件,你需要在gradle文件中添加包的引用(配合官方CardView使用)
compile 'com.android.support:cardview-v7:21.0.3'compile 'com.android.support:recyclerview-v7:21.0.3'
然后是在XML文件用使用它
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler_view" android:layout_centerVertical="true" android:layout_centerHorizontal="true"/>
接着在Activity中设置它
public class MainActivity extends ActionBarActivity { @InjectView(R.id.recycler_view) RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); mRecyclerView.setLayoutManager(new LinearLayoutManager(this));//这里用线性显示 类似于listview// mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));//这里用线性宫格显示 类似于grid view// mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));//这里用线性宫格显示 类似于瀑布流 mRecyclerView.setAdapter(new NormalRecyclerViewAdapter(this)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); }}
然后是适配器代码
public class NormalRecyclerViewAdapter extends RecyclerView.Adapter<NormalRecyclerViewAdapter.NormalTextViewHolder> { private final LayoutInflater mLayoutInflater; private final Context mContext; private String[] mTitles; public NormalRecyclerViewAdapter(Context context) { mTitles = context.getResources().getStringArray(R.array.titles); mContext = context; mLayoutInflater = LayoutInflater.from(context); } @Override public NormalTextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new NormalTextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false)); } @Override public void onBindViewHolder(NormalTextViewHolder holder, int position) { holder.mTextView.setText(mTitles[position]); } @Override public int getItemCount() { return mTitles == null ? 0 : mTitles.length; } public static class NormalTextViewHolder extends RecyclerView.ViewHolder { @InjectView(R.id.text_view) TextView mTextView; NormalTextViewHolder(View view) { super(view); ButterKnife.inject(this, view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("NormalTextViewHolder", "onClick--> position = " + getPosition()); } }); } }}
三、效果图
LinearLayoutManager样式
GridLayoutManager样式
最后给出代码下载地址-->Demo Code
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- RecyclerView使用详解(一)
- Android RecyclerView使用详解(一)
- Android 中RecyclerView使用详解(一)
- Android RecyclerView使用详解一
- RecyclerView 的使用详解(一)
- RecyclerView 的使用详解(一)
- RecyclerView使用(一)
- Android RecyclerView 详解(一)最最最基本使用
- RecyclerView使用进阶(一)
- RecyclerView的使用(一)
- Recyclerview使用体验(一)
- 1016. Phone Bills (25) 电话费账单结账
- Android 控件:ViewFlipper的简单使用
- 弱校联萌十一大决战之强力热身
- QT 内置标准对话框
- LightOJ 1214 Large Division
- RecyclerView使用详解(一)
- RecyclerView使用详解(二)
- iOS面试题要点
- CentOS7最小安装以及后续软件安装
- RecyclerView使用详解(三)
- AndroidUI 视图动画-移动动画效果 (TranslateAnimation)
- 《Java编程思想》学习记录仪五 -- 类、方法、参数、返回值(第二章一切都是对
- DirectX11 颜色立方体示例Demo
- 【软考】原码、反码、补码和移码由来和转换