首页 > 其他分享 >Android学习之RecyclerView

Android学习之RecyclerView

时间:2023-05-08 16:38:27浏览次数:35  
标签:support 学习 v7 import Android RecyclerView android view


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_ide_02

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


Android学习之RecyclerView_android_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_jar_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_android_05


    Android学习之RecyclerView_jar_06

    标签:support,学习,v7,import,Android,RecyclerView,android,view
    From: https://blog.51cto.com/u_16099425/6254914

    相关文章

    • IELTS学习(005) - 单词(学校教育篇)
      文章目录01引言02词汇目标03单词详解04应用01引言Wearejustanadvancedbreedofmonkeysonaminorplanetofaveryaveragestar.Butwecanunderstandtheuniverse.Thatmakesussomethingveryspecial.-StephenHawking我们只是一颗寻常恒星的一颗小小行星......
    • Android5.0 v7扩展包之RecyclerView
      Android5.0v7扩展包之RecyclerViewAndroid开发文章 androidRecyclerViewRecyclerView。RecylerView简介TheRecyclerViewwidgetisamoreadvancedandflexibleversionofListView.ThiswidgetisaContainerfordisplayinglargedatasetsthatcanbescrolledvery......
    • Java学习笔记(十一)
       1、请描述abstractclass和interface的区别?(1)实现方式抽象类是一个类,可以像普通类一样拥有属性和方法,但是它的部分方法没有具体实现,需要由子类来实现。抽象类使用关键字abstract来定义。在Java中,一个类只能继承一个抽象类。接口没有属性,只有方法和常量,所有的方法都是抽象的......
    • Hudi学习笔记5 - Hudi配置分析(1)
      Hudi官方配置文档:https://hudi.apache.org/docs/configurations,从源码分析可以看到配置项hoodie.payload.ordering.field已经废弃,取而代之的是hoodie.datasource.write.precombine.field。ConfigPropertyConfigProperty聚合了HoodieConfig。//https://github.com/apac......
    • Hudi学习笔记4 - Hudi配置之Spark配置
      SparkDatasourceConfigs读配置配置项是否必须默认值配置说明as.of.instantYN/A0.9.0版本新增,时间旅行查询从哪儿开始,有两种格式的值:yyyyMMddHHmmss和yyyy-MM-ddHH:mm:ss,如果不指定则从最新的snapshot开始hoodie.file.index.enableNtruehoodie.......
    • JVM面试和学习中需要注意的部分
      内存结构1.方法区用来存储类加载的数据,例如类的名称,方法入口2.JVM虚拟机栈用于存储线程,包括局部变量和方法参数3.堆内存用来存储对象4.方法区的规范实现:永久代和元空间5.方法区JVM栈堆都会发生内存溢出的问题程序计数器不会6.程序计数器用来存储程序运行到哪里因为线......
    • 2023.5.8周学习总结
      一.本周计划1.继续复习图论知识2.vp一场省赛3.补cf和abc和牛客的题二.计划完成情况三.题解(158条消息)AtCoderBeginnerContest300(D-G)_scanner___yw的博客-CSDN博客四.总结1.这周打比赛的时候非常粗心,经常写错变量名,然后吃很多罚时,就很亏。......
    • Android Studio相关问题
      下载去官网下载即可,最新版如果运行不了,可选择安装其他版本,我安装的就是4.0版本建立项目一般就是建立一个空项目如果使用过idea,那么建立项目就很简单。因为Android Studio和idea 界面都差不多,功能也类似步骤:File——New——New Project 会出现以下画面:然后选择Empty......
    • 学习笔记 - 基础算法
      基础算法三分模板题P3382【模板】三分法doublelmid,rmid;doubleconsteps=1e-6;while(r-l>eps){lmid=(l*2+r)/3;rmid=(r*2+l)/3;if(F(lmid)>F(rmid))r=rmid;elsel=lmid;}cout<<l<<'\n';......
    • 学习Golang时遇到的似懂非懂的概念
      背景......