Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 將替代ListView的RecyclerView 的使用詳解(一)

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

編輯:關於Android編程

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; 
} 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) 
{ 
// 創建一個View,簡單起見直接使用系統提供的布局,就是一個TextView 
View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null); 
// 創建一個ViewHolder 
ViewHolder holder = new ViewHolder(view); 
return holder; 
} 
@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) 
{ 
// 綁定數據到ViewHolder上 
viewHolder.mTextView.setText(mDataset); 
} 
@Override 
public 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 了, 復用的邏輯被封裝了, 寫起來更加簡單。

以上所述是小編給大家介紹的將替代ListView的RecyclerView 的使用詳解(一),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!

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