Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android學習之RecyclerView淺析

Android學習之RecyclerView淺析

編輯:關於Android編程

RecyclerView是android-support-v7-21版本中新增的一個Widget,官方介紹RecyclerView 是 ListView 的升級版本,更加先進和靈活。

 

開發環境

- IDE: ADT
- SDK: Android L

 

首先(如何導入recycleview.jar包)在Android SDK Manager上下載Android Support Repository,

\

它會在sdk/extras/android目錄下生成m2repository目錄,

\

進入RecycleView目錄。用解壓文件打開recyclerview-v7-21.0.0-rc1.aar文件,將claaes.jar改名recycleview.jar後放入工程libs文件夾。

\

 

如果想在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 plaincopy   在CODE上查看代碼片派生到我的代碼片  
  1.  
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent">
  4.  
  5. android:id="@+id/recyclerView"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"/>
  8.  
  9.  
    Activity中

     

     

    [java]view plaincopy   在CODE上查看代碼片派生到我的代碼片    
    1. packagecom.leigo.recyclerview;
    2.  
    3. importandroid.app.Activity;
    4. importandroid.os.Bundle;
    5. importandroid.support.v7.widget.LinearLayoutManager;
    6. importandroid.support.v7.widget.RecyclerView;
    7.  
    8. /**
    9. *@ClassNameRecyclerViewActivity
    10. *@DescriptionTODO
    11. *@authorGaoLei
    12. *@date2014-7-2
    13. */
    14. publicclassRecyclerViewActivityextendsActivity{
    15.  
    16. privatestaticfinalStringTAG=RecyclerViewActivity.class
    17. .getSimpleName();
    18.  
    19. privateRecyclerViewmRecyclerView;
    20.  
    21. /**
    22. *@Method:onCreate
    23. *@Description:TODO
    24. *@paramsavedInstanceState
    25. *@seeandroid.app.Activity#onCreate(android.os.Bundle)
    26. */
    27. @Override
    28. protectedvoidonCreate(BundlesavedInstanceState){
    29. super.onCreate(savedInstanceState);
    30. setContentView(R.layout.activity_recycle_view);
    31.  
    32. mRecyclerView=(RecyclerView)findViewById(R.id.recyclerView);
    33.  
    34. LinearLayoutManagerlayoutManager=newLinearLayoutManager(this);
    35. //layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
    36. //設置布局管理器
    37. mRecyclerView.setLayoutManager(layoutManager);
    38.  
    39. String[]dataset=newString[100];
    40. for(inti=0;i dataset[i]="item"+i;
    41. }
    42. RecyclerAdaptermAdapter=newRecyclerAdapter(dataset);
    43. mRecyclerView.setAdapter(mAdapter);
    44. }
    45.  
    46. }
      •  

         

         

        RecyclerView 一個特點就是,將 layout 抽象成了一個 LayoutManager,RecylerView 不負責子 View 的布局, 我們可以自定義 LayoutManager 來實現不同的布局效果, 目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默認是垂直, 可以指定水平, 這樣就輕松實現了水平的 ListView。

         

        Adapter
         

         

        [java]view plaincopy   在CODE上查看代碼片派生到我的代碼片    
        1. packagecom.leigo.recyclerview;
        2.  
        3. importandroid.support.v7.widget.RecyclerView;
        4. importandroid.support.v7.widget.RecyclerView.Adapter;
        5. importandroid.view.View;
        6. importandroid.view.ViewGroup;
        7. importandroid.widget.TextView;
        8.  
        9. /**
        10. *@ClassNameRecyclerAdapter
        11. *@DescriptionTODO
        12. *@authorGaoLei
        13. *@date2014-7-2
        14. */
        15. publicclassRecyclerAdapterextendsAdapter{
        16. privateString[]mDataset;
        17.  
        18. /**
        19. *@Description:TODO
        20. */
        21. publicRecyclerAdapter(String[]dataset){
        22. mDataset=dataset;
        23. }
        24.  
        25. publicstaticclassViewHolderextendsRecyclerView.ViewHolder{
        26.  
        27. publicTextViewmTextView;
        28.  
        29. /**
        30. *@Description:TODO
        31. *@paramitemView
        32. */
        33. publicViewHolder(ViewitemView){
        34. super(itemView);
        35. mTextView=(TextView)itemView;
        36. }
        37. }
        38.  
        39. /**
        40. *@Method:getItemCount
        41. *@Description:TODO
        42. *@return
        43. *@seeandroid.support.v7.widget.RecyclerView.Adapter#getItemCount()
        44. */
        45. @Override
        46. publicintgetItemCount(){
        47. returnmDataset.length;
        48. }
        49.  
        50. /**
        51. *@Method:onBindViewHolder
        52. *@Description:TODO
        53. *@paramholder
        54. *@paramposition
        55. *@seeandroid.support.v7.widget.RecyclerView.Adapter#onBindViewHolder(android.support.v7.widget.RecyclerView.ViewHolder,
        56. *int)
        57. */
        58. @Override
        59. publicvoidonBindViewHolder(ViewHolderholder,intposition){
        60. holder.mTextView.setText(mDataset[position]);
        61. }
        62.  
        63. /**
        64. *@Method:onCreateViewHolder
        65. *@Description:TODO
        66. *@paramparent
        67. *@paramviewType
        68. *@return
        69. *@seeandroid.support.v7.widget.RecyclerView.Adapter#onCreateViewHolder(android.view.ViewGroup,
        70. *int)
        71. */
        72. @Override
        73. publicViewHolderonCreateViewHolder(ViewGroupparent,intviewType){
        74. Viewview=View.inflate(parent.getContext(),
        75. android.R.layout.simple_list_item_1,null);
        76. ViewHolderholder=newViewHolder(view);
        77. returnholder;
        78. }
        79. }  
          RecyclerView 的另一個特點是標准化了 ViewHolder, 編寫 Adapter 面向的是 ViewHoder 而不在是View 了, 復用的邏輯被封裝了, 寫起來更加簡單。

           

           

          截圖

          \

           

          \

                 
      1. 上一頁:
      2. 下一頁:
      熱門文章
      閱讀排行版
      Copyright © Android教程網 All Rights Reserved