我試着搜索這個問題,但找不到合適的解決方案。如何訪問隱藏的RecyclerView項目?
基本上,我有一個包含6個項目的RecyclerView的佈局。
6個項目中的5個在屏幕上可見。第六隱藏。
現在在執行一個動作(在這裏拖放),我修改了每個項目中的內容。這發生了。
但是,只爲可見項目。
當我在執行操作後向下滾動第6項時,它不會顯示更改。只有可見5才行。
我在適配器內使用getChildCount()
回收器視圖的方法,它顯示的值爲5(不是6)。我調試了一下,發現它目前正在考慮屏幕上可見的兒童人數。
如果我向下滾動一點,第一項和第六項的上半部分的下面部分是可見的,並執行操作來修改所有項目內容 - 它的工作原理!
我認爲使用LinearLayoutManager是一種解決方案,因爲它在任何情況下返回itemCount爲6,但無法理解如何使用來訪問RecyclerView的項目/子項。
我故意嘗試使用getChildAt(5)
來訪問和修改第6件RecyclerView,我得到了NullPointerException
,因爲RV由於它在屏幕上不可見而不能識別該項目。
此外,項目內容在執行操作時的修改正在使用RV適配器內部鍵入的代碼在自定義方法中執行,而不是RecyclerView適配器的重寫方法,如onBindViewHolder(...)
,通過獲取對視圖的引用和在getChildAt()
的幫助下訪問他們的子視圖。
我懷疑是否需要代碼,但如果需要,請告知。我正在使用自定義的DragListener類,我正在訪問視圖,每個RecyclerView項目的子視圖和修改數據。
如何訪問RV的所有項目(可見和隱藏)並一次修改它們?
我想這是顯而易見的作爲訪問一個項目和修改的合法途徑是通過OnBindViewHolder(...)。如果正確,那麼我如何才能使用OnDragListener方法?因爲如果我在Adapter中使用OnDragListener,對於某些功能,我不能同時讓它與Adapter方法協調。我希望我很清楚...... –
您是否爲該項目調用了'notifyItemChanged(position)'。 – Qamar
對不起Qamar,但我沒有看到我的問題和這種方法之間的很多聯繫。也許你必須詳細說明,並通過解決我的問題讓我明白 –