1.在写ViewPager2的ViewHolder的时候给ItemView设置tag为当前的ViewHolder
public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
itemView.setTag(this);
}
}
设置之后我们就可以通过ViewPager2获取它Item的ItemView,然后getTag获取ViewHolder,获取到ViewHolder就能操作view了
2.如何通过ViewPager2获取到ItemView呢
下面代码是获取ViewPager2第一个item的ItemView
RecyclerView recyclerViewImpl = (RecyclerView) binding.ViewPager2.getChildAt(0);
View itemView = recyclerViewImpl.getChildAt(0);
获取第二个:
RecyclerView recyclerViewImpl = (RecyclerView) binding.ViewPager2.getChildAt(0);
View itemView = recyclerViewImpl.getChildAt(1);
我们需要知道两个知识点:
1).ViewPager2是由RecyclerView实现的,ViewPager2的第0个child就是RecyclerView,
RecyclerView的Item对应VIewPager2的item
2).RecyclerView的第几个item就是第几个child,例如第0个item就是 getChildAt(0);
3.通过ItemView的getTag获取ViewHolder
Adapter.ViewHolder viewHolder = (Adapter.ViewHolder) itemView.getTag();
4.这些只有在ViewPager2绘制完毕后才能获取
binding.ViewPager2.post(new Runnable() {
@Override
public void run() {
}
});