將替代ListView的RecyclerView 的使用詳解(一)
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);
// 創(chuàng)建一個線性布局管理器
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
// 設(shè)置布局管理器
recyclerView.setLayoutManager(layoutManager);
// 創(chuàng)建數(shù)據(jù)集
String[] dataset = new String[100];
for (int i = 0; i < dataset.length; i++){
dataset = "item" + i;
}
// 創(chuàng)建Adapter,并指定數(shù)據(jù)集
MyAdapter adapter = new MyAdapter(dataset);
// 設(shè)置Adapter
recyclerView.setAdapter(adapter);
}
RecyclerView 首先的一個特點就是,將 layout 抽象成了一個 LayoutManager,RecylerView 不負責子 View 的布局,我們可以自定義 LayoutManager 來實現(xiàn)不同的布局效果,目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默認是垂直, 可以指定水平, 這樣就輕松實現(xiàn)了水平的 ListView。
接下來看 Adapter 是怎么實現(xiàn)的
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>
{
// 數(shù)據(jù)集
private String[] mDataset;
public MyAdapter(String[] dataset)
{
super();
mDataset = dataset;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i)
{
// 創(chuàng)建一個View,簡單起見直接使用系統(tǒng)提供的布局,就是一個TextView
View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null);
// 創(chuàng)建一個ViewHolder
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i)
{
// 綁定數(shù)據(jù)到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 的使用詳解(一),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- 淺談RecyclerView(完美替代ListView,GridView)
- Android中實現(xiàn)淘寶購物車RecyclerView或LIstView的嵌套選擇的邏輯
- Android添加圖片到ListView或者RecyclerView顯示
- Android RecyclerView詳解之實現(xiàn) ListView GridView瀑布流效果
- Android App開發(fā)中使用RecyclerView替代ListView的實踐
- Android仿XListView支持下拉刷新和上劃加載更多的自定義RecyclerView
- 學習Android Material Design(RecyclerView代替ListView)
- RecyclerView使用詳解(代替ListView)
相關(guān)文章
Android中TextView自動適配文本大小的幾種解決方案
在布局中使用的話,注意按照你最大的設(shè)備來設(shè)置字體大小,這樣在小設(shè)備上回自動縮放,下面這篇文章主要給大家介紹了關(guān)于Android中TextView自動適配文本大小的幾種解決方案,需要的朋友可以參考下2022-06-06
AndroidHttpClient詳解及調(diào)用示例
本文給大家介紹AndroidHttpClient結(jié)構(gòu)、使用方式及調(diào)用示例詳解,需要的朋友可以參考下2015-10-10
Android開發(fā)Jetpack組件Room使用講解
Room是一個數(shù)據(jù)庫訪問組件; 對SqLite數(shù)據(jù)庫做了友好的封裝,使我們在編碼的時候,只需要注重邏輯的部分即可,數(shù)據(jù)庫就交給Room去流暢的訪問即可2022-08-08
c++ mk文件出錯Jni調(diào)用產(chǎn)生java.lang.UnsatisfiedLinkError錯誤解決方法
錯誤產(chǎn)生在我把方法從c語言轉(zhuǎn)為c++語言后產(chǎn)生的,后來檢查到這種錯誤是因為mk文件出錯,加載c文件和加載c++的文件所用的代碼不一樣,下面請看2013-11-11
AndroidX下使用Activity和Fragment的變化詳解
這篇文章主要介紹了AndroidX下使用Activity和Fragment的變化詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
Android中的ViewPager視圖滑動切換類的入門實例教程
Android中ViewPager通常與Fragments組件共同使用來實現(xiàn)視圖切換功能,本文就帶大家一起來學習Android中的ViewPager視圖滑動切換類的入門實例教程:2016-06-06

