如何獲取RecycerView
中的當前項目?在我的使用案例中,RV項目佔用了所有的屏幕空間,因此一次只有一個項目。 我以前試過谷歌,但沒有發現有用的東西。在RecyclerView中可見項目
整體使用情況:
UI。底部導航有一個按鈕,應該調用一定的方法(比方說,一個
foo()
法)片段這
foo()
方法應該從適配器可見項,並呼籲在主持人的具體方法。
如何獲取RecycerView
中的當前項目?在我的使用案例中,RV項目佔用了所有的屏幕空間,因此一次只有一個項目。 我以前試過谷歌,但沒有發現有用的東西。在RecyclerView中可見項目
整體使用情況:
UI。底部導航有一個按鈕,應該調用一定的方法(比方說,一個foo()
法)片段
這foo()
方法應該從適配器可見項,並呼籲在主持人的具體方法。
使用這個代碼中的
LinearLayoutManager mLayoutManager;
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
,讓你看到項目使用下面的代碼
mLayoutManager.findFirstVisibleItemPosition();
你也可以用你的RecyclerView的ListAdapter的OnItemClickListener來確定當前的項目。在這種情況下,該項目需要點擊。
這不是我的使用案例( –
我的解決方案
val position = (recyclerView?.layoutManager as LinearLayoutManager).findFirstVisibleItemPosition()
val product = adapter?.getItemByPosition(position)
FirebaseCrash.logcat(Log.DEBUG, TAG, "onNavClickEvent = $product")
product?.let { productListViewModel?.order(it.id) }
結果是:
onNavClickEvent = Product(id=1, title='Cap', description='some descr.', price=10, photo='http://lorempixel.com/200/200/sports/1/')
是的,我可以得到一個位置,但我怎麼能得到項目?更甚者,根據這個答案(https://stackoverflow.com/a/25053500/1752729),這不是最好的方法 –