將替代ListView的RecyclerView 的使用詳解(一)
RecyclerView 是 android-support-v7-21 版本中新增的一個(gè) Widgets, 還有一個(gè) CardView 會(huì)在下次介紹使用。官方介紹 RecyclerView 是 ListView 的升級(jí)版本,更加先進(jìn)和靈活。我們寫一個(gè)簡(jiǎn)單的實(shí)例例,來看一下究竟有多先進(jìn)和靈活。
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)建一個(gè)線性布局管理器 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 首先的一個(gè)特點(diǎn)就是,將 layout 抽象成了一個(gè) LayoutManager,RecylerView 不負(fù)責(zé)子 View 的布局,我們可以自定義 LayoutManager 來實(shí)現(xiàn)不同的布局效果,目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默認(rèn)是垂直, 可以指定水平, 這樣就輕松實(shí)現(xiàn)了水平的 ListView。
接下來看 Adapter 是怎么實(shí)現(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)建一個(gè)View,簡(jiǎn)單起見直接使用系統(tǒng)提供的布局,就是一個(gè)TextView View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null); // 創(chuàng)建一個(gè)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 的另一個(gè)特點(diǎn)是標(biāo)準(zhǔn)化了 ViewHolder, 編寫 Adapter 面向的是 ViewHoder 而不在是View 了, 復(fù)用的邏輯被封裝了, 寫起來更加簡(jiǎn)單。
以上所述是小編給大家介紹的將替代ListView的RecyclerView 的使用詳解(一),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 淺談RecyclerView(完美替代ListView,GridView)
- Android中實(shí)現(xiàn)淘寶購(gòu)物車RecyclerView或LIstView的嵌套選擇的邏輯
- Android添加圖片到ListView或者RecyclerView顯示
- Android RecyclerView詳解之實(shí)現(xiàn) ListView GridView瀑布流效果
- Android App開發(fā)中使用RecyclerView替代ListView的實(shí)踐
- Android仿XListView支持下拉刷新和上劃加載更多的自定義RecyclerView
- 學(xué)習(xí)Android Material Design(RecyclerView代替ListView)
- RecyclerView使用詳解(代替ListView)
相關(guān)文章
android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法
這篇文章主要為大家詳細(xì)介紹了android調(diào)用原生圖片裁剪后圖片尺寸縮放的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Android Compose實(shí)現(xiàn)聯(lián)系人列表流程
聲明式UI,更簡(jiǎn)單的自定義,實(shí)時(shí)帶交互的預(yù)覽功能Compose并不是類似于Recyclerview的高級(jí)控件,而是直接拋棄了View,ViewGroup那套東西,從上到下魯了一套全新的框架,直白點(diǎn)說就是它的渲染機(jī)制,布局機(jī)制,觸摸算法,以及UI具體寫法全都是新的2023-03-03android獲取當(dāng)前接入點(diǎn)信息判斷是ctwap還是ctnet實(shí)例代碼
這篇文章主要介紹了android獲取當(dāng)前接入點(diǎn)信息判斷是ctwap還是ctnet的方法,大家參考使用吧2013-11-11Android編程實(shí)現(xiàn)禁止StatusBar下拉的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)禁止StatusBar下拉的方法,涉及Android StatusBarManager相關(guān)屬性控制操作技巧,需要的朋友可以參考下2017-08-08Android Studio導(dǎo)入Project與Module的方法及實(shí)例
這篇文章主要介紹了Android Studio導(dǎo)入Project與Module的方法及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-04-04Android編程實(shí)現(xiàn)小說閱讀器滑動(dòng)效果的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)小說閱讀器滑動(dòng)效果的方法,涉及onTouch事件滑動(dòng)效果的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android自定義view實(shí)現(xiàn)半圓環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Android自定義view實(shí)現(xiàn)半圓環(huán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Android優(yōu)化應(yīng)用啟動(dòng)速度
這篇文章主要介紹了Android優(yōu)化應(yīng)用啟動(dòng)速度,針對(duì)Android性能優(yōu)化中的加快應(yīng)用啟動(dòng)速度進(jìn)行學(xué)習(xí),感興趣的小伙伴們可以參考一下2016-01-01