Android学习之RecyclerView

奋斗吧
奋斗吧
擅长邻域:未填写

标签: Android学习之RecyclerView 博客 51CTO博客

2023-05-08 18:24:13 33浏览

Android学习之RecyclerView,RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍


RecyclerView是android-support-v7-21版本中新增的一个Widget,官方介绍RecyclerView 是 ListView 的升级版本,更加先进和灵活。

开发环境

 - IDE: ADT
 - SDK: Android L

首先在Android SDK Manager上下载Android Support Repository,


Android学习之RecyclerView_android

它会在sdk/extras/android目录下生成m2repository目录,


Android学习之RecyclerView_RecycleView_02

进入RecycleView目录。用解压文件打开recyclerview-v7-21.0.0-rc1.aar文件,将claaes.jar改名后放入lib文件夹。


Android学习之RecyclerView_RecycleView_03

如果想在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这样就可以关联源代码了。


创建项目如图

Android学习之RecyclerView_android_04

布局文件中使用 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 了, 复用的逻辑被封装了, 写起来更加简单。


    截图

    Android学习之RecyclerView_ide_05


    Android学习之RecyclerView_ide_06

    好博客就要一起分享哦!分享海报

    此处可发布评论

    评论(0展开评论

    暂无评论,快来写一下吧

    展开评论

    客服QQ 1913284695