1. 程式人生 > >萬能RecyclerView的資料介面卡BaseRecyclerViewAdapterHelper

萬能RecyclerView的資料介面卡BaseRecyclerViewAdapterHelper

今天樓主才發現github上有這麼一個好用的開原始碼,充滿好奇心的樓主馬上使用了,特地分享給大家。

此專案的github地址:

專案優點:


 優化了Adapter程式碼,減少了程式碼量

    新增Item事件
        Item的點選事件
        Item的長按事件
        Item子控制元件的點選事件
        Item子控制元件的長按事件

    新增列表載入動畫

      一行程式碼輕鬆切換5種預設動畫。

    新增頭部、尾部

      一行程式碼搞定,感覺又回到ListView時代。

    自動載入

      上拉載入無需監聽滑動事件,可自定義載入佈局,顯示異常提示,自定義異常提示。

    新增分組

      隨心定義分組頭部。

    自定義不同的item型別

      簡單配置、無需重寫額外方法。

    設定空佈局

      比Listview的setEmptyView還要好用。

    新增拖拽、滑動刪除

      開啟,監聽即可,就是這麼簡單。

    分組的伸縮欄

      比ExpandableListView還要強大,支援兩級。

    自定義ViewHolder

      支援自定義ViewHolder,讓開發者隨心所欲。

使用整合步驟:

先在 build.gradle(Project:XXXX) 的 repositories 新增:

	allprojects {
		repositories {
			...
			maven { url "https://jitpack.io" }
		}
	}

然後在 build.gradle(Module:app) 的 dependencies 新增:

	dependencies {
	        compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE'
	}
VERSION_CODE:--替換: 
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.17'

MainActivity

package top.wintp.colorfuldemo;

import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Toast;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.animation.BaseAnimation;

import java.util.ArrayList;

/**
 * 作者:  你的感冒清
 * <p>
 * qq:  337081267
 * <p>
 * CSDN:    http://blog.csdn.net/pyfysf
 * <p>
 * 個人部落格:    http://wintp.top
 * <p>
 * 時間:   17-5-27
 * <p>
 * 郵箱:  
[email protected]
*/ public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = (RecyclerView) findViewById(R.id.rlv); //建立資料 ArrayList<String> strings = new ArrayList<>(); for (int i = 0; i < 100; i++) { strings.add("test" + i); } //建立資料介面卡 QuickAdapter myAdapter = new QuickAdapter(R.layout.item_recycler, strings); //設定佈局管理者 mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapter(myAdapter); //設定動畫 // myAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN); //設定自定義動畫 myAdapter.openLoadAnimation(new BaseAnimation() { @Override public Animator[] getAnimators(View view) { return new Animator[]{ ObjectAnimator.ofFloat(view, "scaleY", 1, 1.1f, 1), ObjectAnimator.ofFloat(view, "scaleX", 1, 1.1f, 1) }; } }); myAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { Toast.makeText(MainActivity.this, "itemclick", Toast.LENGTH_SHORT).show(); } }); myAdapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() { @Override public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) { Toast.makeText(MainActivity.this, "setOnItemLongClickListener", Toast.LENGTH_SHORT).show(); return false; } }); myAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() { @Override public void onLoadMoreRequested() { Toast.makeText(MainActivity.this, "setOnLoadMoreListener", Toast.LENGTH_SHORT).show(); } }); // myAdapter.addFooterView(); // myAdapter.addHeaderView(); } }

activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rlv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>

使用RecyclerView:需要新增依賴

在 build.gradle(Module:app) 的 dependencies 新增:

	dependencies {
	           compile 'com.android.support:recyclerview-v7:25.3.1'

	}

資料介面卡程式碼:

package top.wintp.colorfuldemo;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.ArrayList;

 /**

  *
  * 作者:  你的感冒清
  *
  * qq:  337081267
  *
  * CSDN:    http://blog.csdn.net/pyfysf
  *
  * 個人部落格:    http://wintp.top
  *
  * 時間:   17-5-27
  *
  * 郵箱:  [email protected]
  */
public class QuickAdapter extends BaseQuickAdapter<String, BaseViewHolder> {


    public QuickAdapter(int item_recycler, ArrayList<String> strings) {
        super(item_recycler, strings);
    }

    @Override
    protected void convert(BaseViewHolder helper, String item) {
        helper.setText(R.id.tv_item, item);
    }
}

item佈局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:gravity="center"
        android:textColor="#f00"
        android:textSize="20sp"/>

</LinearLayout>


更多功能還請訪問該專案的github網址。


相關推薦

萬能RecyclerView資料介面卡BaseRecyclerViewAdapterHelper

今天樓主才發現github上有這麼一個好用的開原始碼,充滿好奇心的樓主馬上使用了,特地分享給大家。 此專案的github地址: 專案優點:  優化了Adapter程式碼,減少了程式碼量     新增Item事件         Item的點選事件         Ite

RecyclerView 通用介面卡封裝

有很久沒有寫部落格了,主要還是因為小 baby 的誕生,忙前忙後,跑來跑去的很少有整片整片的時間靜下心來寫部落格,現在小楠終於回北京了,自己利用 SpringBoot 搭建部落格也基本完成了,終於有了自己的個人部落格。這段時間雖然沒有寫部落格,但是平時也不是沒有積累,只是零零散散的記在本子裡,現

萬能RecyclerView分割線擴充套件

該divider可以自己定義寬高、距離左邊、右邊的距離,顏色等,先來看下效果: 在專案中將RecyclerViewDivider.java考入,然後再引用即可,裡面有幾個建構函式,可以選擇合適自己的,下面舉例是引數最多的那個,可以設定顏色,寬高,舉例左右邊界的距離:

RecyclerView.Adapter介面卡通用化改造

RecyclerView 是谷歌給開發者的福利,比以往的ListView更加強大,效能更大,具體原始碼分析,我們下次講。本篇主要介紹如何在專案中提煉程式碼,增強它的適配性。下面就介紹我的思路。 首先一般編碼有如下幾個問題。 1.列表資料,需要寫一個RecyclerView.Adapter

ListView和Adapter資料介面卡的簡單介紹

ListView   顯示大量相同格式資料   常用屬性:     listSelector            listView每項在選中、按下等不同狀態時的Drawable  

Android必學之資料介面卡BaseAdapter

什麼是資料介面卡? 下圖展示了資料來源、介面卡、ListView等資料展示控制元件之間的關係。我們知道,資料來源是各種各樣的,而ListView所展示資料的格式則是有一定的要求的。資料介面卡正是建立了資料來源與ListView之間的適配關係,將資料來源轉換為ListView能夠顯示的資料格式,從而將資料的來

十秒鐘搞定 RecyclerView 資料繫結

前言 在上一個專案裡有很多很多很多很多的RecyclerView,然後我需要寫很多很多很多很多的Adapter和Viewholder——多倒沒問題,但是裡面有很多重複的程式碼這就不能忍了!每一個Adapter和ViewHolder其實做的事情非常的像:檢視繫結,資料繫結,點

Android城市選擇列表(一)——RecyclerView資料分組

地區選擇功能在APP中是非常常見的,Demo主要簡單實現了快速索引選擇地區的功能,本帖圍繞此demo,介紹如何在RecyclerView中分組展示資料以及快速索引。 先上效果圖: 1.虛擬資料 建立一個類儲存一串json格式的地區資料

Android資料介面卡Adapter的快速使用(只需要兩步)

什麼是資料介面卡? 下圖展示了資料來源、介面卡、ListView等資料展示控制元件之間的關係。我們知道,資料來源是各種各樣的,而ListView所展示資料的格式則是有一定的要求的。資料介面卡正是建立了資料來源與ListView之間的適配關係,將資料來源轉換為L

專案實訓(七)【巨坑】recyclerview介面卡更新後佈局混亂

先描述一下我遇到的問題: 一個帖子列表,帖子佈局中有一個顯示圖片的佈局,一張兩張三張圖片的顯示效果不同,所以對應著有三個不同的佈局,初始都是gone。根據解析資料解析出的圖片數選擇顯示那個佈局。 列表有底部載入,到達底部獲取資料新增到陣列中,然後呼叫介面卡的

幾乎萬能資料結構(java)

1.支援Model物件轉xml 2.支援Model物件轉json 3.xml轉為Model物件 4.支援資料物件的任意(無限)巢狀 請看最終的輸出結果: package com.gavin.model; import java.io.Serializab

資料介面卡---BaseAdapter

文章詳細介紹了資料介面卡BaseAdapter三種使用方法。 程式碼: Xml檔案:activity_main <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="ht

RecyclerView分組之BaseRecyclerViewAdapterHelper(實現分組功能)

1.前言 相信很多小夥伴之前用過listview列表展示資料,然後RecyclerView應該不會陌生,大多數開發者應該都使用上它了,它也是google推薦替換ListView的控制元件,但是用過它的同學應該都知道它在某些方面並沒有ListView使用起來方

RecyclerView資料更新神器

概述 DiffUtil是support-v7:24.2.0新增的工具類,它主要是用來計算兩個資料集之間的差異,計算出舊資料集->新資料集的最小變化量,並將其返回。 演算法 DiffUtil內部採用ugene W. Myers’s differen

Android RecyclerView通用介面卡,支援Header、Footer、LoadMore、EmptyView等功能

前言 RecyclerView已經發布很久了,高度的解耦性和靈活的定製性使得其一經發布就廣受好評,但在使用過程中會發現,編寫介面卡的程式碼量貌似有點多,而且不支援新增HeaderView、FooterView等功能,甚至連Item點選監聽都沒有,這當然是不能忍

RecyclerView打造萬能介面卡,點選事件,5.0水波紋點選效果

一.前言 最近使用到RecyclerView,RecyclerView使用詳解戳這裡,由於使用過張鴻洋大神的ListView萬能Adapter,感覺RecyclerView的Adapter編寫還是太麻煩了,而且沒有點選事件,ok,參考ListView的萬能Ad

偷懶新姿勢,打造屬於RecyclerView萬能介面卡Adapter和ViewHolder

前言 昨天開始接觸江湖口碑很好的RecyclerView,事實上,我已經被她的強大所征服了!資源回收,資料繫結,佈局顯示,分割線,Item動畫多個模組高度解耦,靈活優雅。其實,RecyclerView在使用上已經是相當簡單了(個人覺得),但仍有很多程式碼是可以

(再次更新)打造RecyclerView萬能介面卡,上拉重新整理,下拉載入

入行幾個月了,一直想自己封裝一些類,剛好遇到了這個問題,現在跟大家分享。 注意點 1 泛型擦除 2 需要防止型別轉換異常 github地址:https://github.com/zw21544182/MyBaseDemo (裡面還有部分FileUtil

Android(無需javabean)的RecyclerView萬能介面卡,解耦從這裡做起

先介紹下為什麼這麼做,因為RecyclerView需要一個javabean,同時呢,對於整個系統中的一個物件,也需要建造一個javabean。但是很明顯,RecyclerView中的那個bean顯然是整個系統中那個物件javabean的子集。所以我覺得不應該專門為Recyc

RecyclerView 萬能介面卡的抽取

//這裡我們寫的複雜的RecyclerView對條目的抽取,我們只設置了三個型別,頭佈局(輪播圖),身體佈局,腳佈局(上拉重新整理)的複雜條目的抽取框架 import android.support.v7.widget.RecyclerView; import androi