1. 程式人生 > >這才是你想要的RecyclerView的擴充套件庫

這才是你想要的RecyclerView的擴充套件庫

RecyclerView自從2015年推出以來,至今在開源中出現了各種各樣的開源庫,五花八門,但是,在使用的過程中是否真的適合你呢?這個我就不太清楚,然而,我感覺我還沒有找到使用更方便的庫,因此,我建立了這個庫ExpandRecyclerView

在2015年我建立了一個RecyclerView分割線庫叫RecyclerViewDecoration,1.x版本雖然具備很多屬性,但是用起來不是很方便。直到2017年,我才改成Builder的方式2.x版,也優化了演算法,同時也有一些小夥伴給我提了一些新的需求。到現在為止,也還有一些新的需求,這些問題,我後面都會陸續更新。

包括現在要介紹的ExpandRecyclerView

,從1.3版本開始將RecyclerViewDecoration的內容也合併這裡。陸續會有更多分割線和adapter結合的API出現。這個庫的出現,目的很簡單,就是要在使用的過程中,儘量減少使用者的程式碼量。不清楚怎麼使用,可以參考sample中的例子,下面只是簡單的介紹。

Adapter

1.RecyclerViewAdapter

這個adapter可以支援單種item和多種item。

例:(單種item)

RecyclerViewAdapter adapter = new RecyclerViewAdapter<>(this, Arrays.asList(titles)
    , R.layout.item_main_list
    , new RecyclerViewSingleTypeProcessor<String>() {
        @Override
        public void onBindViewHolder(RecyclerViewViewHolder holder, final int position, String str) {
            TextView textView = holder.getView(R.id.tv_content);
            textView.setText(str);
        }
    });

例:(多種item)

mAdapter = new RecyclerViewAdapter<>(this, mDataList
    , new int[]{R.layout.item_list_type0, R.layout.item_list_type1}
    , new RecyclerViewMultipleTypeProcessor<Car>() {

        @Override
        public void onBindViewHolder(RecyclerViewViewHolder holder, int position, Car object) {
            if(getItemViewType(position) == 0) {
                TextView textView = holder.getView(R.id.tv_content);
                textView.setText(object.getBrand() + "/" + object.getTypeName());
            }else{
            }
        }

        @Override
        public int getItemViewType(int position) {
            //define two viewTypes
            if (position % 2 == 0)
                return 1;
            return 0;
        }
    });

2.RecyclerViewGroupAdapter

特別要注意的是這個Adapter的第一個item一定是一個group type。

例:

mGroupAdapter = new RecyclerViewGroupAdapter<>(this, mDataList
                , new int[]{R.layout.item_group_type, R.layout.item_list_type1}
                , new RecyclerViewGroupTypeProcessor<Car>() {


            @Override
            public void onBindGroupViewHolder(RecyclerViewViewHolder holder, int groupPosition, Car car) {
                TextView tvGroup = holder.getView(R.id.tv_group);
                tvGroup.setText(car.getGroup());
            }


            @Override
            public void onBindItemViewHolder(RecyclerViewViewHolder holder, final int groupPosition, final int itemPosition, Car car) {
                TextView tvContent = holder.getView(R.id.tv_content);
                tvContent.setText("Car brand:" + car.getBrand() + " / type: " + car.getTypeName());


                tvContent.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(GroupListActivity.this
                                , "Group: " + groupPosition + "\titemPosition: " + itemPosition, Toast.LENGTH_SHORT).show();
                    }
                });
            }


            @Override
            public int getItemViewType(int position) {
                if (mDataList.get(position).getGroup() != null)
                    return 0;
                return 1;
            }
        });

ItemDecoration

還有新的RecyclerViewGroupItemDecoration分組分割線。可以在sample中GroupGridActivity中可以看到它的一種使用方式。

Style

轉換一些通用的RecyclerView佈局方式。

更多API的詳細介紹,請檢視wiki

如果你發現了bug,或者你有什麼新的想法,需求歡迎email給我。[email protected]

相關推薦

就是的 C#8.0 和.NET Core 3.0

      C# 的下一個主要版本是 8.0。我們已經為它工作了很長一段時間,即使我們構建併發布了次要版本 C# 7.1, 7.2 和 7.3,我仍然對 8.0 將帶來的新特性感到非常興奮。 目前的計劃是 C# 8.0 將與 .NET Core 3.

RecyclerView擴充套件

RecyclerView自從2015年推出以來,至今在開源中出現了各種各樣的開源庫,五花八門,但是,在使用的過程中是否真的適合你呢?這個我就不太清楚,然而,我感覺我還沒有找到使用更方便的庫,因此,我建立了這個庫ExpandRecyclerView。在2015年我建立了一個Re

全開源ASP.NET工作流快速開發平臺,的強大工作流引擎就在裏!

名詞 全面 節點 eight 想要 stat 生活 委托 的人 現在辦公要流程化,營銷也有流程,流程現在已經是各種生活活動不可缺少的一部分了。就像這句耳熟能詳的話:“凡事,我們先走個流程嘛!”,在信息化、流程化的背景下。工作流引擎,這個名詞就出現了!那麽,什麽是工作流引擎呢

Guitar Pro中文版下載,的,都在啦!

全能 cnblogs strong 開始 demo 愛好 blank 支持 詳細 我的音樂我做主!Guitar Pro7中文版的發布為更多音樂愛好者帶來更多更優質的體驗!為幫助所有吉他愛好者學習、繪譜、創作而設計的音樂空間!為前所未有的音樂盛聽而震撼,音樂才子,等的就是你!

移動安全技能提升播報,類都有!

ges 能力 毫無 安卓 如何 種類 漏洞挖掘 樂趣 疑問 近年來,利用app滲透工具展開攻擊的案例層出不窮,受害者也與日俱增。雖說只要消除安全漏洞就能夠杜絕這些攻擊,但這就需要安全從業者掌握正確的安全知識。 隨著移動互聯網的迅速發展,智能手機,平板電腦,一些可穿戴設備逐漸

大數據:數據大合集,裏或許會有

數據資源大數據時代,用數據做出理性分析顯然更為有力。做數據分析前,能夠找到合適的的數據源是一件非常重要的事情,獲取數據的方式有很多種,不必局限。下面將從公開的數據集、爬蟲、數據采集工具、付費API等等介紹。給大家推薦一些能夠用得上的數據獲取方式。 一、公開數據庫 1.常用數據公開網站 UCI:經典的機器學習、

不吹不擂,的Python面試都在裏了【315+道題】

def 每天 leet soup XML unique 通信 cors 後進先出 https://www.cnblogs.com/wupeiqi/p/9078770.html 近日恰逢學生畢業季,課程後期大家“期待+苦逼”的時刻莫過於每天早上內容回顧和面試題問答部分【臨

最新學習資料,裏都有!

工具 sele 移動 頁面開發 全棧 百度網盤 深入 實戰 管理 H5&JS進階與組件化網頁開發 Java Web進階:數據庫與MyBatis入門-職業路徑 Java Web強化:SSM框架整合-職業路徑 Java 仿抖音短視頻小程序開發 全棧式實戰項目 Nginx

的巨集基因組-微生物組知識全在(180901)

徵稿、轉載、合作 文章分類導航目錄 精選文章推薦 培訓、會議、招聘廣告 科研經驗 軟體和資料庫 擴增子分析 巨集基因組分

的巨集基因組-微生物組知識全在(181001)

文章目錄 徵稿、轉載、合作 文章分類導航目錄 精選文章推薦 培訓、會議、招聘廣告 科研經驗 軟體和資料庫 擴增子分析 巨集基因組分析 R統計繪圖 實驗設計與技

的巨集基因組-微生物組知識全在(190101)

文章目錄 徵稿、轉載、合作 文章分類導航目錄 精選文章推薦 培訓、會議、招聘 科研經驗 軟體和資料庫 擴增子分析 巨集基因組分析 Linux與Shell R統

Android仿微信圖片編輯的功能這裡都有

最近專案需要,寫了一個和微信中圖片編輯功能類似的圖片編輯庫,除去問題操作上擯棄掉不方便的手勢操作外,其餘微信中的核心功能全部一致,保留了微信中塗鴉、馬賽克、文字等隨時隨著圖片縮放的功能,這點是我所找的庫都不提供的功能,也是我從零去完成這個圖片編輯庫的原因。

的巨集基因組-微生物組知識全在(181101)

歡迎點選上方藍色"巨集基因組"關注我們! 巨集基因組/微生物組是當今世界科研最熱門的研究領域之一,為加強本領域的技術交流與傳播,推動中國微生物組計劃發展,中科院青年科研人員創立“巨集基因組”公眾號,目標為打造本領域純乾貨技術及思想交流平臺。 本公眾號每日推

Win32_Printer class 從WMI取到的印表機的屬性資訊,一定是找的 The Win32_Printer WMI class represents a device conne

Win32_Printer class 從WMI取到的印表機的屬性資訊,這一定是你想要找的 The Win32_Printer WMI class represents a device connected to a computer running on a Micros

的 HBase 原理都在

目錄 一、 叢集架構 叢集角色 工作機制 二、儲存機制 A. 儲存模型 B. LSM 與 Compaction C. Region 分裂

掃描二維碼,有!

cnblogs mage 掃描 image http blog img ima jpg 掃描二維碼,有你想要!

二維碼帶log和直接跳到的頁面

() else tac color eat cal graphic ica flag package com.example.myapplication6;import android.graphics.Bitmap;import android.graphics.Bitm

到此次在一鳴驚人便是神魄脫離的倒是白白耽擱

caf lln cdc bcf ade eee cab def eba 音外治條很情我養準南級調目油造細小要目集總裝作確中及強者三全直意是多親候資作江切為個處料來轉事就結被連務象及熱年合表沒或軍委克質領風引時 http://baobao.baidu.com/article/

網絡爬蟲技術Jsoup——爬到一切的(轉)

append nload ntp 信任 can 網絡爬蟲 ets bst contain 轉自:http://blog.csdn.net/ccg_201216323/article/details/53576654 本文由我的微信公眾號(bruce常)原創首發,

時間戳的換算,讓可以任意的時間形式

ace 星期 minutes sub test new date bst 小時 // 對Date的擴展,將 Date 轉化為指定格式的String// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個占位符, // 年(y)可以用 1-4