I am trying to get the position of the first visible element in a RecyclerView, because I need information about it (e.g. name). Unfortunately, when I use LayoutManager.findFirstVisibleItemPosition() , it returns 0, all the time. Moreover, my RecyclerView is in NestedScrollView. All of these elements are in the PageAdapter (TabLayout). Here are my two RecyclerView setup methods:
private void initializeAdapter() { NaBiezacoAktualnosciAdapter adapter = new NaBiezacoAktualnosciAdapter(items, getContext()); recyclerView.setAdapter(adapter); } private void initializeLayoutManager(final View v) { final ExpansiveLayoutManager llm = new ExpansiveLayoutManager(getActivity()); recyclerView.setLayoutManager(llm); recyclerView.setNestedScrollingEnabled(false); recyclerView.setHasFixedSize(true); recyclerView.addOnItemTouchListener( new RecyclerItemClickListener(getContext(), new RecyclerItemClickListener.OnItemClickListener() { @Override public void onItemClick(View view, int position) { } }) ); NestedScrollView nestedScrollView = (NestedScrollView) v.findViewById(R.id.nested); nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { int firstVisibleCard = llm.findFirstCompletelyVisibleItemPosition(); int lastVisibleCard = llm.findLastCompletelyVisibleItemPosition(); Log.d("aaaa", "firstVisibleCard= " + firstVisibleCard); Log.d("aaaa", "lastVisibleCard= " + lastVisibleCard); } }); }
Anyone have an idea how to make this work? I would be happy for any advice :)
source share