RecyclerView使用介绍

原创 2015年11月18日 11:39:38


RecyclerView是Google在5.0中发布的新控件,用来替代ListView,它的使用更加灵活,提供了更好的性能而且更容易使用。该控件是一个可以装载大量的视图集合,并且可以非常效率的进行回收和滚动。当你list中的元素经常动态改变时可以使用RecyclerView控件。

它提供了如下两个功能:
1、为每个条目位置提供了layout管理器(RecyclerView.setLayoutManager)
2、为每个条目设置了操作动画(RecyclerView.setItemAnimator)

一、使用前的准备

使用eclipse的Import导入两个库项目,路径为:你的sdk目录的/extras/android/support/v7:


导入之后把工程改为库项目,之后关联上自己的应用,如果还是无法使用,那么就直接下载我的jar包吧,jar包的使用就不介绍了:recyclerView下载,里面同时提供了CardView的jar包。

如果碰到ClassnotFound:android.support.v7.recyclerview.R.styleable,请使用这个jar包替换:替换jar


准备工作做完之后就可以正式的使用了,先来看下最基本的使用,上效果图


XML代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v7.widget.RecyclerView

        android:id="@+id/recyclerView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</RelativeLayout>

java代码:

public class MainActivity extends Activity {
	private RecyclerView recyclerView;
	private RecyclerView.Adapter<ViewHolder> adapter;
	private List<String> datas;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 初始化数据
		initData();
		recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
		// 设置是否固定大小
		recyclerView.setHasFixedSize(true);
		// 使用匿名内部类的形式创建RecyclerView的Adapter
		adapter = new Adapter<ViewHolder>() {
			// item的数量
			@Override
			public int getItemCount() {
				return datas.size();
			}

			// 初始化操作
			@Override
			public ViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) {
				final View view = LayoutInflater.from(MainActivity.this).inflate(android.R.layout.simple_list_item_1,
						null);

				return new MyViewHolder(view);
			}

			// 在这里添加视图
			@Override
			public void onBindViewHolder(ViewHolder viewHolder, int arg1) {
				((MyViewHolder) viewHolder).txtv.setText(datas.get(arg1));
			}
		};
		// 使用线性布局
		recyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
		// 设置动画
		recyclerView.setItemAnimator(new DefaultItemAnimator());
		// 设置适配器
		recyclerView.setAdapter(adapter);

	}

	// 内部类用来创建ViewHolder
	public static class MyViewHolder extends ViewHolder {
		public TextView txtv;

		public MyViewHolder(View itemView) {
			super(itemView);
			txtv = (TextView) itemView.findViewById(android.R.id.text1);
		}

	}

	// 初始化数据
	private void initData() {
		datas = new ArrayList<String>();
		datas.add("小红1");
		datas.add("小红2");
		datas.add("小红3");
		datas.add("小红4");
		datas.add("小红5");
		datas.add("小红6");
		datas.add("小红7");

	}

}


没有分割线,是不是觉得很丑呢?下面加上分割线,添加代码如下:

	// 添加分割线
		recyclerView.addItemDecoration(new ItemDecoration() {

			@Override
			public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {
				super.getItemOffsets(outRect, view, parent, state);
			}

			@Override
			public void onDraw(Canvas c, RecyclerView parent, State state) {
				super.onDraw(c, parent, state);
				Log.e("", "onDraw");
				// 初始化画笔
				Paint paint = new Paint();
				paint.setAntiAlias(true);
				paint.setDither(true);
				paint.setColor(Color.RED);
				// 开始画
				for (int i = 0, size = parent.getChildCount(); i < size; i++) {
					View view = parent.getChildAt(i);
					c.drawLine(view.getLeft(), view.getBottom(),
							((WindowManager) parent.getContext().getSystemService(Context.WINDOW_SERVICE))
									.getDefaultDisplay().getWidth(),
							view.getBottom(), paint);
				}
			}

			@Override
			public void onDrawOver(Canvas c, RecyclerView parent, State state) {
				super.onDrawOver(c, parent, state);
				Log.e("", "onDrawOver");
			}

		});

上效果图:


啊哈~~~~~~~~~简单粗暴的演示了一下界面,怎么添加点击事件呢???????????下面来添加item的点击事件:

如果你也是一个喜欢简单粗暴的直性子,那么我恭喜你,实现这个很容易,直接在adapter里的onBindViewHolder方法里面设置监听就好了,代码如下

	// 在这里添加视图
			@Override
			public void onBindViewHolder(ViewHolder viewHolder, final int arg1) {
				((MyViewHolder) viewHolder).txtv.setText(datas.get(arg1));
				//添加监听
				((MyViewHolder)viewHolder).txtv.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						Toast.makeText(MainActivity.this, "你点到我啦~" + arg1, Toast.LENGTH_SHORT).show();
					}
				});
			}

来个动态图片小小的演示一下~~~~~:


不过这个点击事件是有一定的缺陷的,就是只能在View大小内点击,不能再整个item点击。当然你也可以使用接口回调的方式把点击事件引出来,这里我就不再演示了,那么RecyclerView的演示就到这里吧,有时间再深入的研究一下。最后提供demo下载:demo下载

扫描关注我的微信公众号:



版权声明:本文为欢乐斗佛原创文章,未经其允许不得转载。

相关文章推荐

RecyclerView使用介绍

RecyclerView是一个比ListView更灵活的一个控件 ,可以说是ListView和GridView的升级版

RecyclerView使用介绍

RecyclerView使用介绍 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识、前端、后端以至于产品和设计都有涉猎...

RecyclerView使用介绍

来源 http://jinyudong.com/2014/11/13/Introduce-RecyclerView-%E4%B8%80/ 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以...

eclipse开发使用recyclerview步骤介绍

现在都是用android studio开发安卓了,然而还是有少部分人在使用eclipse开发。前天帮同学看eclipse使用recyclerview的问题,发现还是有一些坑的,总是会在xml报 In...

RecyclerView详细介绍&使用。

RecyclerView简介RecyclerView是Android 5.0提供的新控件,已经用了很长时间了,但是一直没有时间去仔细的梳理一下。现在有时间了,决定来整理下。官方文档中是这样介绍的: ...

RecyclerView的使用介绍(一)

介绍RecyclerView与ListView原理是类似的:都是仅仅维护少量的View并且可以展示大量的数据集。RecyclerView用以下两种方式简化了数据的展示和处理: 使用LayoutMana...

android RecyclerView 使用完全解析 介绍(二)

RecyclerView 是Google推出的一个强大的View ,可以替代ListView ,GridView ,瀑布流等等组件。RecyclerView是用来显示大量数据的容器,并通过有限数量的...

RecyclerView使用介绍

RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好。接下来通过一系列的文章讲解如何使用RecyclerView...

Android RecyclerView使用介绍

转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.htmlRecyclerView 是Android L版...

RecyclerView使用介绍

RecyclerView使用介绍 泡在网上的日子 / 文 发表于2014-11-18 11:40 第87174次阅读 RecyclerView 12 来源 http://jinyudong.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)