日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(三) LtRecyclerView v2.x (自定义上拉和下拉刷新View)

發(fā)布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (三) LtRecyclerView v2.x (自定义上拉和下拉刷新View) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

(一) 超簡單自定義上下刷新布局-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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。