萬能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