Android刷新庫(kù)TRecyclerView,好不好用你試試就知道

TRecyclerView

由于項(xiàng)目需求,很多地方使用了大量的多類型item,就做了下封裝,感覺再怎么封裝依舊不是很完美,于是搗鼓搗鼓,自己弄了套刷新庫(kù),主要是整合了針對(duì)單類型,多類型的item開發(fā),支持下拉刷新,加載更多功能的TRecyclerView,旨意在于讓開發(fā)者只關(guān)心ViewHolder的開發(fā),高復(fù)用,TRecyclerView(面向ViewHolder開發(fā)的刷新庫(kù),多類型item終結(jié)者,好不好用你試試就知道)

主要功能

效果圖

111.png
222.png
333.png
444.png
555.png
666.png
777.png
888.png

使用步驟

Gradle

Step 1. 在你的根build.gradle文件中增加JitPack倉(cāng)庫(kù)依賴。

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

Step 2. 在你的model的build.gradle文件中增加TRecyclerView依賴

 com.github.SelfZhangTQ:TRecyclerView:2.5.4

Step 3. Item類型配置

DelegateAdapter adapter = new DelegateAdapter.Builder<>()
        //設(shè)置刷新頭 如果有刷新需求,此代碼不配置,則不具有刷新功能,ProgressStyle.Pacman配置刷新樣式
       .bind(HeaderVo.class, new HeaderViewHolder(this, ProgressStyle.Pacman));
        //設(shè)置item1,
       .bind(Bean1.class, new ItemView1(this))
       //設(shè)置item2,
       .bind(Bean2.class, new ItemView2(this))
       //加載更多,如果不需要加載更多,此代碼可不配置
       .bind(FootVo.class, new FootViewHolder(this, ProgressStyle.Pacman))
        //一對(duì)多
      .bindArray(ItemData.class, new ItemHolder4(this), new ItemType5(this),new ItemHolder6(this))
      .withClass(new OneToMany<ItemData>() {
              @Override
              public Class<? extends VHolder<ItemData, ?>> onItemView(int position, ItemData itemData) {
                  if (itemData.type==1) {
                      return ItemHolder4.class;
                  }else if (itemData.type==2) {
                      return ItemHolder5.class;
                  }else if (itemData.type==3) {
                      return ItemHolder6.class;
                  }
                  return ItemHolder4.class;
              }
          })
       .build();

//數(shù)據(jù)容器
items = new Items();

layoutManager = new LinearLayoutManager(LinearLayoutActivity.this);
mRecyclerView.setAdapter(adapter);
mRecyclerView.setLayoutManager(layoutManager);

Step 4. 自定義刷新動(dòng)畫配置和加載更多描述配置

  //自定義刷新頭 需要實(shí)現(xiàn)OnTouchMoveListener接口,
  RefreshHeader refreshHeader = new RefreshHeader(this);
 .bind(HeaderVo.class,newHeaderViewHolder(LinearLayoutActivity.this,refreshHeader, new refreshHeader.getOnTouchMoveListener()))
            
            
//加載更多描述配置,用4個(gè)參數(shù)的構(gòu)造方法即可。
new FootViewHolder(this, ProgressStyle.SysProgress,"努力加載","沒有更多啦。。");          

Step 5.下拉刷新,加載更多,滾動(dòng)監(jiān)聽回調(diào)

mRecyclerView.addOnRefreshListener(new OnRefreshListener(){
        @Override
        public void onRefresh() {

         }
        @Override
        public void onLoadMore() {

        }
    });
mRecyclerView.addOnTScrollListener(new OnTScrollListener() {
        @Override
        public void onScrolled(int dx, int dy) {

        }

        @Override
        public void onScrollStateChanged(int state) {

        }
    });

Step 6.刷新完成或加載更多完成后的操作

//刷新完成,有更多
mRecyclerView.refreshComplete(items,false);

//注:如果默認(rèn)加載不夠一頁數(shù),即沒有更多
mRecyclerView.refreshComplete(items,true);


//加載更多完成,還有分頁數(shù)據(jù),
//此處是服務(wù)器返回的數(shù)據(jù)集合,并非是所有數(shù)據(jù)集合
mRecyclerView.loadMoreComplete(items,false);

// 注:如果默認(rèn)加載不夠一頁數(shù),即沒有更多
mRecyclerView.refreshComplete(items,true);

// 局部刷新
mRecyclerView.notifyItemRangeChanged(position,1);

Step 7. 添加Item點(diǎn)擊事件

    adapter.setOnItemClickListener(this);//實(shí)現(xiàn)OnItemClickListener接口
    或者通過DelegateAdapter.Builder().setOnItemClickListener(this)配置
    
  項(xiàng)目實(shí)戰(zhàn)使用可參考:<https://github.com/SelfZhangTQ/T-MVVM> <br/>

Step 8.CoordinatorLayout+AppBarLayout+SwipeRecyclerView使用的問題

由于滑動(dòng)沖突,滑動(dòng)到底部加載更多加載時(shí)間長(zhǎng)問題,需要自定義AppBarLayout.Behavior

 <android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    app:elevation="0dp"
    app:layout_behavior="com.trecyclerview.util.AppBarBehavior">

TRecyclerView使用步驟介紹完了,對(duì)了adapter好像忘了介紹,NO,NO,NO,你不需要關(guān)心adapter,盡情的編寫ViewHolder吧

項(xiàng)目github地址:https://github.com/SelfZhangTQ/TRecyclerView 歡迎star,感謝支持

Demo簡(jiǎn)單可看實(shí)戰(zhàn)項(xiàng)目

項(xiàng)目實(shí)戰(zhàn)地址github地址:https://github.com/SelfZhangTQ/T-MVVM 歡迎star,感謝支持

效果圖:

5_video.gif

Thanks

  • multitype
  • AVLoadingIndicatorView

未經(jīng)同意禁止抄襲,如轉(zhuǎn)載請(qǐng)?jiān)陲@要位置標(biāo)注

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,954評(píng)論 25 709
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    wgl0419閱讀 6,576評(píng)論 1 9
  • 我從不想做一個(gè)過客,不想讓一個(gè)花了整個(gè)青春的城市只成為我的驛站,我努力地在這座離我爸媽很遠(yuǎn)的城市艱難筑巢。 從我讀...
    我不是蝸牛閱讀 518評(píng)論 0 0
  • 《暗戀桃花源》 經(jīng)典 1992年電影 騰訊視頻: https://v.qq.com/x/cover/www228o...
    茶葉蛋的碎碎念閱讀 333評(píng)論 0 1
  • 在讀史時(shí)大多數(shù)人(當(dāng)然包括本人)對(duì)那些慷慨赴死的義士往往是歆慕贊賞,慨嘆惺惺。然掩卷而思,異地處之,自己...
    伍_f6a2閱讀 171評(píng)論 0 1

友情鏈接更多精彩內(nèi)容