將替代ListView的RecyclerView 的使用(一)

來源:互聯網
上載者:User

RecyclerView 是 android-support-v7-21 版本中新增的一個 Widgets, 還有一個 CardView 會在下次介紹使用。官方介紹 RecyclerView 是 ListView 的升級版本,更加先進和靈活。我們寫一個簡單的執行個體例,來看一下究竟有多先進和靈活。

build.gradle 配置

android {  compileSdkVersion 'android-L'  buildToolsVersion "20.0.0"   defaultConfig {  minSdkVersion 'L'  targetSdkVersion 'L'  ...  }  ... }   dependencies {  compile 'com.android.support:recyclerview-v7:+'  ... } 


開始

 

首先是布局檔案中使用 RecyclerView

  <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"        tools:context=".MyActivity" >        <android.support.v7.widget.RecyclerView            android:id="@+id/recyclerView"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:scrollbars="vertical" />    </RelativeLayout>

Activity 中

 

@Override  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);  setContentView(R.layout.activity_my);  RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);  // 建立一個線性布局管理器  LinearLayoutManager layoutManager = new LinearLayoutManager(this);  // 設定布局管理器  recyclerView.setLayoutManager(layoutManager);   // 建立資料集  String[] dataset = new String[100];  for (int i = 0; i < dataset.length; i++){  dataset = "item" + i;  }  // 建立Adapter,並指定資料集 MyAdapter adapter = new MyAdapter(dataset);  // 設定Adapter  recyclerView.setAdapter(adapter);   } 



 

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


接下來看 Adapter 是怎麼實現的

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{// 資料集private String[] mDataset;public MyAdapter(String[] dataset){super();mDataset = dataset;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i){// 建立一個View,簡單起見直接使用系統提供的布局,就是一個TextViewView view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null);// 建立一個ViewHolderViewHolder holder = new ViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(ViewHolder viewHolder, int i){// 綁定資料到ViewHolder上viewHolder.mTextView.setText(mDataset);}@Overridepublic int getItemCount(){return mDataset.length;}public static class ViewHolder extends RecyclerView.ViewHolder{public TextView mTextView;public ViewHolder(View itemView){super(itemView);mTextView = (TextView) itemView;}}}


 

RecyclerView 的另一個特點是標準化了 ViewHolder, 編寫 Adapter 面向的是 ViewHoder 而不在是View 了, 複用的邏輯被封裝了, 寫起來更加簡單。



 

RecyclerView 簡單使用之後, 發現確實靈活了很多, RecyclerView 的特性還有很多, 下一篇文章再繼續探索,未完待續

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.