您好,登錄后才能下訂單哦!
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è)資訊頻道,感謝各位的閱讀!
免責(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)容。