RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView 是 ListView 的升级版本,更加先进和灵活。
开发环境
- IDE: ADT
- SDK: Android L
首先在Android SDK Manager上下载Android Support Repository,
它会在sdk/extras/android目录下生成m2repository目录,
进入RecycleView目录。用解压文件打开recyclerview-v7-21.0.0-rc1.aar文件,将claaes.jar改名后放入lib文件夹。
如果想在ADT中关联源代码,可以在libs下新建文件
recycleview.jar.properties
编辑
src=D:\\adt-bundle-windows-x86_64-20131030\\sdk\\extras\\android\\m2repository\\com\\android\\support\\recyclerview-v7\\21.0.0-rc1\\recyclerview-v7-21.0.0-rc1-sources.jar
右键项目close project,然后open project这样就可以关联源代码了。
创建项目如图
布局文件中使用 RecyclerView
[html] view plain copy
1. <?xml version="1.0" encoding="utf-8"?>
2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent" >
5.
6. <android.support.v7.widget.RecyclerView
7. android:id="@+id/recyclerView"
8. android:layout_width="match_parent"
9. android:layout_height="match_parent" />
10.
11. </RelativeLayout>
Activity中
[java] view plain copy
1. package com.leigo.recyclerview;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.support.v7.widget.LinearLayoutManager;
6. import android.support.v7.widget.RecyclerView;
7.
8. /**
9. * @ClassName RecyclerViewActivity
10. * @Description TODO
11. * @author GaoLei
12. * @date 2014-7-2
13. */
14. public class RecyclerViewActivity extends Activity {
15.
16. private static final String TAG = RecyclerViewActivity.class
17. .getSimpleName();
18.
19. private RecyclerView mRecyclerView;
20.
21. /**
22. * @Method: onCreate
23. * @Description: TODO
24. * @param savedInstanceState
25. * @see android.app.Activity#onCreate(android.os.Bundle)
26. */
27. @Override
28. protected void onCreate(Bundle savedInstanceState) {
29. super.onCreate(savedInstanceState);
30. setContentView(R.layout.activity_recycle_view);
31.
32. mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
33.
34. new LinearLayoutManager(this);
35. // layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
36. // 设置布局管理器
37. mRecyclerView.setLayoutManager(layoutManager);
38.
39. new String[100];
40. for (int i = 0; i < dataset.length; i++) {
41. "item" + i;
42. }
43. new RecyclerAdapter(dataset);
44. mRecyclerView.setAdapter(mAdapter);
45. }
46.
47. }<strong>
48. </strong>
RecyclerView 一个特点就是,将 layout 抽象成了一个 LayoutManager,RecylerView 不负责子 View 的布局, 我们可以自定义 LayoutManager 来实现不同的布局效果, 目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默认是垂直, 可以指定水平, 这样就轻松实现了水平的 ListView。
Adapter
[java] view plain copy
1. package com.leigo.recyclerview;
2.
3. import android.support.v7.widget.RecyclerView;
4. import android.support.v7.widget.RecyclerView.Adapter;
5. import android.view.View;
6. import android.view.ViewGroup;
7. import android.widget.TextView;
8.
9. /**
10. * @ClassName RecyclerAdapter
11. * @Description TODO
12. * @author GaoLei
13. * @date 2014-7-2
14. */
15. public class RecyclerAdapter extends Adapter<RecyclerAdapter.ViewHolder> {
16. private String[] mDataset;
17.
18. /**
19. * @Description: TODO
20. */
21. public RecyclerAdapter(String[] dataset) {
22. mDataset = dataset;
23. }
24.
25. public static class ViewHolder extends RecyclerView.ViewHolder {
26.
27. public TextView mTextView;
28.
29. /**
30. * @Description: TODO
31. * @param itemView
32. */
33. public ViewHolder(View itemView) {
34. super(itemView);
35. mTextView = (TextView) itemView;
36. }
37. }
38.
39. /**
40. * @Method: getItemCount
41. * @Description: TODO
42. * @return
43. * @see android.support.v7.widget.RecyclerView.Adapter#getItemCount()
44. */
45. @Override
46. public int getItemCount() {
47. return mDataset.length;
48. }
49.
50. /**
51. * @Method: onBindViewHolder
52. * @Description: TODO
53. * @param holder
54. * @param position
55. * @see android.support.v7.widget.RecyclerView.Adapter#onBindViewHolder(android.support.v7.widget.RecyclerView.ViewHolder,
56. * int)
57. */
58. @Override
59. public void onBindViewHolder(ViewHolder holder, int position) {
60. holder.mTextView.setText(mDataset[position]);
61. }
62.
63. /**
64. * @Method: onCreateViewHolder
65. * @Description: TODO
66. * @param parent
67. * @param viewType
68. * @return
69. * @see android.support.v7.widget.RecyclerView.Adapter#onCreateViewHolder(android.view.ViewGroup,
70. * int)
71. */
72. @Override
73. public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
74. View view = View.inflate(parent.getContext(),
75. null);
76. new ViewHolder(view);
77. return holder;
78. }
79. }
RecyclerView 的另一个特点是标准化了 ViewHolder, 编写 Adapter 面向的是 ViewHoder 而不在是View 了, 复用的逻辑被封装了, 写起来更加简单。
截图
标签:support,学习,v7,import,Android,RecyclerView,android,view From: https://blog.51cto.com/u_16099425/6254914