Android開發之RecyclerView的使用全解
轉自
http://blog.csdn.net/dmk877/article/details/50816933
之後,谷歌公司推出了RecylerView控制元件,RecylerView,我想看到一個新名詞後大部分人會首先發出一個疑問,recylerview是什麼?為什麼會有recylerview也就是說recylerview的優點是什麼?recylerview怎麼用?接下來就對這幾個問題來一起討論一下recylerview,如有謬誤歡迎批評指正,如有疑問請留言。
通過本篇部落格,你將學到以下知識點
①RecyclerView與ListView相比它的優點
②RecyclerView的初步用法
③RecyclerView增加分隔線
④RecyclerView更改分隔線的樣式
⑤RecyclerView的Adapter的用法
⑥RecyclerView.Adapter中重新整理的幾個方法的對比
⑦給RecyclerView增加條目點選事件
1.RecyclerView是什麼?
RecylerView是support-v7包中的新元件,是一個強大的滑動元件,與經典的ListView相比,同樣擁有item回收複用的功能,這一點從它的名字recylerview即回收view也可以看出。看到這也許有人會問,不是已經有ListView了嗎,為什麼還要RecylerView呢?這就牽扯到第二個問題了。
2.RecyclerView的優點是什麼?
根據官方的介紹RecylerView是ListView的升級版,既然如此那RecylerView必然有它的優點,現就RecylerView相對於ListView的優點羅列如下:
①RecylerView封裝了viewholder的回收複用,也就是說RecylerView標準化了ViewHolder,編寫Adapter面向的是ViewHolder而不再是View了,複用的 邏輯被封裝了,寫起來更加簡單。
②提供了一種插拔式的體驗,高度的解耦,異常的靈活,針對一個Item的顯示RecylerView專門抽取出了相應的類,來控制Item的顯示,使其的擴充套件性非常強。例如:
③可以控制Item增刪的動畫,可以通過ItemAnimator這個類進行控制,當然針對增刪的動畫,RecylerView有其自己預設的實現。
3.RecyclerView的用法
3.1 RecyclerView的初步用法(包括RecyclerView.Adapter用法)
說了這麼多,可能大家最關心的就是RecylerView應該怎麼用,我們先來討論討論RecylerView的用法的理論知識,然後結合一個例項來體驗一下RecylerView的優勢首先我們需要明白的一點是使用RecylerView必須匯入support-v7包,在上面我提到過RecylerView高度的解耦,異常的靈活谷歌給我們提供了多個類來控制Item的顯示。
- recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
- LinearLayoutManager layoutManager = new LinearLayoutManager(this );
- //設定佈局管理器
- recyclerView.setLayoutManager(layoutManager);
- //設定為垂直佈局,這也是預設的
- layoutManager.setOrientation(OrientationHelper. VERTICAL);
- //設定Adapter
- recyclerView.setAdapter( recycleAdapter);
- //設定分隔線
- recyclerView.addItemDecoration( new DividerGridItemDecoration(this ));
- //設定增加或刪除條目的動畫
- recyclerView.setItemAnimator( new DefaultItemAnimator());
這種效果的MainAcitivity的程式碼如下
- package com.example.reclerviewpractice;
- import java.util.ArrayList;
- import java.util.List;
- import com.example.reclerviewpractice.adapter.MyRecyclerAdapter;
- import android.annotation.SuppressLint;
- import android.os.Bundle;
- import android.support.v7.app.ActionBarActivity;
- import android.support.v7.widget.DefaultItemAnimator;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.OrientationHelper;
- import android.support.v7.widget.RecyclerView;
- publicclass MainActivity extends ActionBarActivity {
- private RecyclerView recyclerView;
- private List<String> mDatas;
- private MyRecyclerAdapter recycleAdapter;
- @SuppressLint("NewApi") @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout. activity_main);
- recyclerView = (RecyclerView) findViewById(R.id.recyclerView );
- initData();
- recycleAdapter= new MyRecyclerAdapter(MainActivity.this , mDatas );
- LinearLayoutManager layoutManager = new LinearLayoutManager(this);
- //設定佈局管理器
- recyclerView.setLayoutManager(layoutManager);
- //設定為垂直佈局,這也是預設的
- layoutManager.setOrientation(OrientationHelper.VERTICAL);
- //設定Adapter
- recyclerView.setAdapter( recycleAdapter);
- //設定增加或刪除條目的動畫
- recyclerView.setItemAnimator(new DefaultItemAnimator());
- }
- privatevoid initData() {
- mDatas = new ArrayList<String>();
- for ( int i=0; i < 40; i++) {
- mDatas.add( "item"+i);
- }
- }
- }
- package com.example.reclerviewpractice.adapter;
- import java.util.List;
- import com.example.reclerviewpractice.R;
- import android.content.Context;
- import android.support.v7.widget.RecyclerView;
- import android.support.v7.widget.RecyclerView.ViewHolder;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- publicclass MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> {
- private List<String> mDatas;
- private Context mContext;
- private LayoutInflater inflater;
- public MyRecyclerAdapter(Context context, List<String> datas){
- this. mContext=context;
- this. mDatas=datas;
- inflater=LayoutInflater. from(mContext);
- }
- @Override
- publicint getItemCount() {
- return mDatas.size();
- }
- //填充onCreateViewHolder方法返回的holder中的控制元件
- @Override
- publicvoid onBindViewHolder(MyViewHolder holder, finalint position) {
- holder.tv.setText( mDatas.get(position));
- }
- //重寫onCreateViewHolder方法,返回一個自定義的ViewHolder
- @Override
- public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View view = inflater.inflate(R.layout. item_home,parent, false);
- MyViewHolder holder= new MyViewHolder(view);
- return holder;
- }
-
相關推薦
Android開發之RecyclerView的使用全解
轉自 http://blog.csdn.net/dmk877/article/details/50816933 之後,谷歌公司推出了RecylerView控制元件,RecylerView,我想看到一個新名詞後大部分人會首先發出一個疑問,recylervie
Android開發之Zip下載解壓
本篇部落格為需求而發燒,若有雷同需求code拿走不謝。 需求如下:點選Item,從伺服器下載zip包到本地資料夾並解壓,解壓後的圖片檔案全部查詢出來,用於介面預覽 沒有強制每次都下載zip包保持最新,如果有需要FileDownload有函式支援,亦
Android開發之RecyclerView實現流式佈局
RecyclerView是什麼? RecycleView的出現, 替代了ListView, 沒了OnitemClickListener,; LayoutManager負責計算佈局; Adapter 負責適配,還增加了ViewHolder;RecycleView
Android開發之SharedPreferences詳解
一、概述 利用SharedPreferences儲存資料是Android本地儲存資料的方式之一。SharedPreferences主要用於儲存基本型別的資料,例如int、long、string、Boo
ANDROID開發之SQLite詳解
SQLite簡介 Google為Andriod的較大的資料處理提供了SQLite,他在資料儲存、管理、維護等各方面都相當出色,功能也非常的強大。SQLite具備下列特點: 1.輕量級 使用 SQLite 只需要帶一個動態庫,就可以享受它的全部功能
Android開發之RecyclerView新增頭部和底部
前言:我們在使用RecyclerView的過程中其實還是有很多問題的,前面提到的沒有預設的分割線,很是讓人蛋疼啊,但現在有出了個問題,不能新增頭部和底部,這一度讓我認為這貨還是沒有最愛的ListView好用啊,哈哈,既然谷歌出來了,我們就要使用,沒有頭和腳那我們就給他造出頭
Android開發之RecyclerView(一)初步使用
首先要感謝前面的大佬們的總結,給了我站在巨人肩膀上的機會。文中有不對的地方還望大佬指出,如有大佬覺的侵權的地方還望指出,鄙人將以最快速度修改!好了,話不多少了,開始開車! 第一步:匯入RecyclerView compile 'com.android.support:re
Android開發之RecyclerView的互動動畫(實現拖拽和刪除)
做RecyclerView做相關的動畫效果的時候,用的最多的是v7包下的ItemTouchHelper類,這個類很強大,如有興趣的童鞋可以自行翻看原始碼,接下來我帶領大家實現RecyclerView相關的互動動畫。大家看下面的效果(拖拽和刪除): ------------
Android開發之最新Recyclerview控制元件的使用詳解(一)
本篇博文主要給大家分享關於RecyclerView控制元件的使用及通過繼承RecyclerView來實現滑動時載入圖片的優化方案,也同樣能解決防止圖片亂序的問題,之前有在網上有看到大神對Android中ListView非同步載入圖片亂序問題進行過分析,並深入剖析原理
Android開發之漫漫長途 XIV——RecyclerView
計算 來看 就是 們的 anim nullable 源碼 添加 問題 該文章是一個系列文章,是本人在Android開發的漫漫長途上的一點感想和記錄,我會盡量按照先易後難的順序進行編寫該系列。該系列引用了《Android開發藝術探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ
Android開發之漫漫長途 XVI——ListView與RecyclerView項目實戰
列表 系列 緩存 廣泛 原理 前言 評論 request 功能點 該文章是一個系列文章,是本人在Android開發的漫漫長途上的一點感想和記錄,我會盡量按照先易後難的順序進行編寫該系列。該系列引用了《Android開發藝術探索》以及《深入理解Android 卷Ⅰ,Ⅱ,Ⅲ》中
_030_Android_ Android開發之SmsManager(簡訊管理器)詳解
轉自https://blog.csdn.net/qq_37443229/article/details/80039836,感謝作者的無私分享。 Android開發之SmsManager(簡訊管理器)詳解 SmsManager是
Android開發之基本控制元件和詳解四種佈局方式
Android中的控制元件的使用方式和iOS中控制元件的使用方式基本相同,都是事件驅動。給控制元件新增事件也有介面回撥和委託代理的方式。今天這篇部落格就總結一下Android中常用的基本控制元件以及佈局方式。說到佈局方式Android和iOS還是區別挺大的,在iOS中有F
Android開發之“ListView與RecyclerView的對比”
在Android開發最火熱的時候ListView是最長使用的一種展示多item的控制元件,而在2018年的現在已經很少有人用ListView了,使用最多當數RecyclerView了。 下面總結一下兩者的區別: 兩者的用法區別 佈局效果 對空資料的處理 HeaderV
android開發之wheel控制元件使用詳解
出門在外生不起病呀,隨便兩盒藥60多塊錢。好吧,不廢話了,今天我們來看看wheel控制元件的使用,這是GitHub上的一個開源控制元件,用起來十分方便,我們可以用它做許多事情,比如做一個自定義的datepicker,在一些電商App中,經常用它來做省市縣三級聯動,總之用途還是
Android開發之實現水平滾動效果—RecyclerView
ListView由於其強大的功能,在過去的Android開發中有著卓越的貢獻,然而使用ListView,如果不使用一些技巧來提升其效率的話,那麼ListView的效能會很差。 為此,Android提供了一個更加強大的滾動控制元件–RecyclerView。下面
Android開發之第三方推送JPush極光推送知識點詳解 學會整合第三方SDK推送
下面是一些知識點介紹,後期將會帶領大家進行程式碼實戰: 一、Android實現推送方式解決方案: 1、推送方式基礎知識: 在移動網際網路時代以前的手機,如果有事情發生需要通知使用者,則會有一個視窗彈出,將告訴使用者正在發生什麼事情。可能是未接電話
Android開發之WebView和JS互動詳解
Android提供了一個很強大的WebView控制元件用來處理Web網頁,而在網頁中,JavaScript又是一個很舉足輕重的指令碼。本文將介紹如何實現Java程式碼和Javascript程式碼的相互呼叫。 如何實現 實現Java和js互
Android開發之JSON資料解析詳解(二)
在上一篇我們講解了Android開發JSON的基本介紹以及JSON的資料結構等, 今天我們來講解一下JSON的工作原理以及基本用法: JSON解析分為兩種情況,一種是在伺服器端解析,另一種是在客戶端解析 第一種:在伺服器段解析: 通常,客戶端在請求伺服器資料時,伺服器
一篇好文之Android文字軟鍵盤全解
已經有一個多月沒有寫文章了,當然,我沒失蹤,我還活著!因為換了新的工作環境,所以在接手專案的時候花了點時間……不為自己做過多借口,今後持續更新好內容(還是希望自己能周更)! 這篇文章最初是記錄一個全屏模式下輸入框被軟鍵盤覆蓋的問題,要求背景不動,輸入框上移!碰