2017-08-21 180 views
3

如何獲取RecycerView中的當前項目?在我的使用案例中,RV項目佔用了所有的屏幕空間,因此一次只有一個項目。 我以前試過谷歌,但沒有發現有用的東西。在RecyclerView中可見項目

整體使用情況:

  1. UI。底部導航有一個按鈕,應該調用一定的方法(比方說,一個foo()法)片段

  2. foo()方法應該從適配器可見項,並呼籲在主持人的具體方法。

回答

3

使用這個代碼中的

LinearLayoutManager mLayoutManager; 
mLayoutManager = new LinearLayoutManager(this); 
mRecyclerView.setLayoutManager(mLayoutManager); 

,讓你看到項目使用下面的代碼

mLayoutManager.findFirstVisibleItemPosition(); 
+0

是的,我可以得到一個位置,但我怎麼能得到項目?更甚者,根據這個答案(https://stackoverflow.com/a/25053500/1752729),這不是最好的方法 –

1

你也可以用你的RecyclerView的ListAdapter的OnItemClickListener來確定當前的項目。在這種情況下,該項目需要點擊。

+0

這不是我的使用案例( –

0

我的解決方案

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/') 
相關問題