在 activity / fragment 获取其中 adapter 中的控件:
需要注意的是:在获取 adapter 控件时,需要等待 recyclerView 绘制完成,才可以获取到,否则会报空指针异常;
所以需要添加 OnGlobalLayoutListener 和 addOnGlobalLayoutListener 监听方法。
recyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver
.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
//下面序号是需要获取的第几个item
View view = layoutManager.findViewByPosition(2);
//我的adapter中最外层是LinearLayout,如果你的不是,请用对应的布局
LinearLayout layout = (LinearLayout) view;
ImageView iv_showRecord = layout.findViewById(R.id.iv_showRecord);
iv_showRecord.setVisibility(View.VISIBLE);
//OnGlobalLayoutListener可能会被多次触发
//所以完成了需求后需要移除OnGlobalLayoutListener
recyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});