(三) LtRecyclerView v2.x (自定义上拉和下拉刷新View)
(一) 超簡單自定義上下刷新布局-LtRecyclerView v2.x版本(基本使用)
(二) LtRecyclerView v2.x (更多實用方法)
(三) LtRecyclerView v2.x (自定義刷新View)
6.自定義上拉加載的View
6.1.通過setUpLayoutId()方法傳入一個id可以控制全局的上拉刷新View
//自定義配置全局的上拉加載View LtRecyclerViewManager.INSTANCE.init(this).setUpLayoutId(R.layout.lt_up_loading);//此方法設(shè)置一個layout的id,設(shè)置為上拉加載的View原理是通過顯示和隱藏布局內(nèi)的n個View來表示刷新與否
設(shè)置該方法的布局,刷新的布局為第一個,刷新完成的布局為第二個,其他的可以通過LtAdapter.setRefresh(Int)來設(shè)置索引(從0開始)
布局偽代碼示例:
<?xml version="1.0" encoding="utf-8"?> <FrameLayout >//根布局,可以是任意ViewGroup<LinearLayout/>//索引0 默認是刷新時的view<LinearLayout/>//索引1 默認是刷新完成后的view//后面可以添加更多的View,通過setRefresh(Int索引)來控制顯示與隱藏</FrameLayout>6.2.若要單獨配置某一個適配器的上拉加載View
則在LtAdapter的構(gòu)造里傳入相應(yīng)的View即可
6.3.如果不想要上拉加載,則在LtAdapter的構(gòu)造里傳null,默認使用全局的使用空參構(gòu)造即可
7.自定義下拉刷新的View
7.1.內(nèi)部有兩個下拉刷新,一個是系統(tǒng)的SwipeRefreshLayout(已移除,如果需要可以自己自己繼承SwipeRefreshLayout并實現(xiàn)BaseRefreshLayout接口)
和我預(yù)定義的MTextRefreshLayout
默認使用的是SwipeRefreshLayout:
可以設(shè)置為MTextRefreshLayout:
LtRecyclerViewManager.INSTANCE.init(this)//java8.setRefreshLayoutConstructorFunction(MTextRefreshLayout::new);//kotlin使用方式.setRefreshLayoutConstructorFunction(::MTextRefreshLayout)//java7及以下使用方式.setRefreshLayoutConstructorFunction(new Function3<Context, AttributeSet, Integer, BaseRefreshLayout>() {@Overridepublic BaseRefreshLayout invoke(Context context, AttributeSet attributeSet, Integer defStyleAttr) {return new NewWinkChatRefreshLayout(context, attributeSet, defStyleAttr);}});也可以更改為rv不移動,只拉出刷新的View:
LtRecyclerViewManager.INSTANCE.init(this).setRvIsMove(false)//設(shè)置下拉刷新時rv是否跟著移動,只有在自定義時可用.setRefreshLayoutConstructorFunction(MTextRefreshLayout::new);7.2.也可以通過繼承LtRefreshLayout來實現(xiàn)下拉刷新的View
示例:
public class MRefreshLayout extends LtRefreshLayout {//繼承LtRefreshLayout并重寫方法public MRefreshLayout(Context context) {super(context);}public MRefreshLayout(Context context, AttributeSet attrs) {super(context, attrs);}public MRefreshLayout(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic void onStatus(int status) {//當(dāng)狀態(tài)變更時調(diào)用,在此方法中更改刷新View的狀態(tài),一共有四個狀態(tài)public final static int STATE_REFRESH_DOWN = 0;//下拉中public final static int STATE_REFRESH_RELEASE = 1;//松開刷新public final static int STATE_REFRESHING = 2;//刷新中public final static int STATE_REFRESH_FINISH = 3;//刷新完成public final static int STATE_BACK = 4;//刷新結(jié)束,并且刷新View隱藏到了頂部}@Overridepublic void onProgress(float y) {//當(dāng)前y軸移動了多少,一般不需要這個方法,注意該方法會被頻繁調(diào)用,不要在里面創(chuàng)建對象或耗時操作}@Overrideprotected View getRefreshView() {//返回下拉刷新的Viewreturn null;} } LtRecyclerViewManager.INSTANCE.init(this)//.setRefreshThreshold(100)//設(shè)置松開刷新的位置(全局的閾值).setRefreshLayoutConstructorFunction(MRefreshLayout::new);//配置全局使用自定義的刷新View上面就完成了自定義的下拉刷新View,下拉時移動等操作已經(jīng)在內(nèi)部實現(xiàn)了,只需要控制刷新View的展示即可
而且自定義的下拉刷新View可以直接在xml文件內(nèi)使用
總結(jié)
以上是生活随笔為你收集整理的(三) LtRecyclerView v2.x (自定义上拉和下拉刷新View)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (二) LtRecyclerView v
- 下一篇: Kotlin 中的 run、let、wi