How to access the each view of item by position in Recycler View in android ?
How to access the each view of item by position in Recycler View in android ?
There are some methods to access the view of each item view to change or update the view during the run time. To access the view of the item view ,
consider the Recycler view as below,
RecyclerView mainRecyclerView = (RecyclerView)view.findViewById(R.id.main_recycler_view);
RecyclerAdapter adapter = new RecyclerAdapter(mContext);
mainRecyclerView.setAdapter(adapter);
main.setLayoutManager(new LinearLayoutManager(mContext));
To access the itemView of each position the following functions can be used,
1. View itemView = mainRecyclerView.getChildAt(positionOfItem);2. View itemView = mainRecyclerView.findViewHolderForAdapterPosition(Position).itemView;
3. View itemView = mainRecyclerView.findViewHolderForPosition(Position).itemView;
4. Long itemId = mainRecyclerView.getAdapter().getItemId(position);
View itemView = mainRecyclerView.findViewHolderForItemId(itemId);
5. View itemView = mainRecyclerView.getLayoutManager().findViewByPosition(Position);
6. View itemView = mainRecyclerView.getLayoutManager().getChildAt(position);
After getting the rootView of each item using above methods you can access each element inside the view using the ,
itemView.findViewById();
and you can do as normal to update the view at runtime.
But one of the problem is that if you guys all the above methods normally from the oncreate or createView or any method of fragment or activity it will throw you the null pointer exception as.
android.View.View.findViewById() java.lang.null null pointer exception.
Always these methods should be called from any of the event listeners like onTouchListener or onClickListener or onScrollListener etc as per the requirement.
But if the requirement is like you need to call simply without any event listener then, use the methods as shown below,
mainRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
View itemView = mainRecyclerView.getChildAt(positionOfItem);
mainRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
Cool !! The issue is solved for those are thirsty for this...!! Keep reading the blog for lots of solutions..!!
Comments
Post a Comment