2017-08-21 13 views
3

RecycerViewで現在のアイテムを取得するにはどうすればよいですか?私の使用事例では、RVアイテムはすべてのスクリーンスペースを取るため、一度に1つのアイテムしかありません。 私は以前にGoogleに試みましたが、役に立たなかったものは見つかりませんでした。RecyclerViewで表示アイテムを取得

全体のユースケース:

  1. UI。下部のナビゲーションは、特定のメソッドを呼び出す必要があり、ボタンがあり、このfoo()方法は、アダプタから見えるアイテムを取得し、プレゼンターで特定のメソッドを呼び出す必要がありフラグメント

  2. に(のはfoo()メソッドをしましょう)。

答えて

3

あなたのコード内で使用この

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

とあなたはまた、現在の項目を決定するために、あなたのRecyclerViewのListAdapterにOnItemClickListenerを使用することができ、コード

mLayoutManager.findFirstVisibleItemPosition(); 
+0

ええ、私はポジションを得ることができますが、私はアイテムを入手することができますか?さらに、この回答(https://stackoverflow.com/a/25053500/1752729)に基づいて、それは最良のアプローチではありません –

1

の下に使用して、あなたの目に見えるアイテムを得ます。その場合は、アイテムをクリックする必要があります。

+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/') 
関連する問題