溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

RecyclerView中怎么利用SnapHelper實現(xiàn)無限循環(huán)篩選控件

發(fā)布時間:2021-08-09 17:03:40 來源:億速云 閱讀:300 作者:Leah 欄目:編程語言

RecyclerView中怎么利用SnapHelper實現(xiàn)無限循環(huán)篩選控件,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

1.選項由后臺配置,也就是控件要動態(tài)設(shè)置寬度;2.每次滑動都要左對齊,并默認(rèn)選中最左邊選項;3.控件可以無限循環(huán)。

動態(tài)設(shè)置控件寬度:獲取adapter的item寬度;獲取adapter里裝載的itemCount。 每次滑動都要左對齊:利用LinearSnapHelper中calculateDistanceToFinalSnap的方法實現(xiàn); 默認(rèn)選中最左item:利用RecycleView的LayoutManager中查找顯示第一項的方法linearManager.findFirstVisibleItemPosition()來實現(xiàn)。 控件無限循環(huán):將父類adapter的itemCount設(shè)置為Integer.MAX_VALUE。

FilterWheelView.java

private void initData(){    if (filterItemEntity != null) {      if (!TextUtils.isEmpty(filterItemEntity.getTitle())) {        filtrationType.setText(filterItemEntity.getTitle());      }      if (filterItemEntity.getOptions() != null) {        mAdapter = new ADA_FilterWheel(mContext, filterItemEntity.getOptions());      }      mLoopRecyclerView.setAdapter(mAdapter);      if (adaItemCallback!=null){        adaItemCallback.sendItems(mAdapter.getItemRawCount());      }      //設(shè)置滾動監(jiān)聽      mLoopRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {        @Override        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {          super.onScrollStateChanged(recyclerView, newState);          //滾動停止時,獲取recycler顯示的第一項的position          if (newState == RecyclerView.SCROLL_STATE_IDLE) {            int items = mAdapter.getItemRawCount();            int firstItemPosition =linearManager.findFirstVisibleItemPosition();            //高亮顯示最左邊的item            mAdapter.highlightItem(firstItemPosition % items);          }          //滾動過程中,釋放選中狀態(tài)          if (newState == RecyclerView.SCROLL_STATE_DRAGGING) {            mAdapter.reset();          }        }        @Override        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {          super.onScrolled(recyclerView, dx, dy);        }      });      //找到當(dāng)前選中的實體      for (int i = 0; i < filterItemEntity.getOptions().size(); i++) {        FilterOptionsEntity bean = filterItemEntity.getOptions().get(i);        if (bean.isCheck()) {          // 當(dāng)前選中實體類          currentBean = bean;          break;        }      }    }  }

看完上述內(nèi)容,你們掌握RecyclerView中怎么利用SnapHelper實現(xiàn)無限循環(huán)篩選控件的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI