【发布时间】:2020-11-17 04:49:39
【问题描述】:
我有一个场景,我需要知道 RecyclerView 项目的子视图是否在屏幕上可见。
在这种情况下,每个 RecyclerView 项目都有一个TextView,我需要知道该 TextView 是否在屏幕上完全可见。我已经弄清楚了这部分,但现在我的问题是:
如何从我的片段调用适配器,让它知道视图在屏幕上可见?为此我应该遵循什么最佳做法?
这是我获取可见子视图的片段类方法:
private void getFirstVisibleChildView() {
int findFirstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();
int findLastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
int [] positions = { findFirstVisibleItemPosition, findLastVisibleItemPosition };
PostAdapter.PostViewHolder viewHolder;
Rect scrollBounds = new Rect();
recyclerView.getDrawingRect(scrollBounds);
int[] location = new int[2];
for (int position : positions) {
RecyclerView.ViewHolder item = recyclerView.findViewHolderForAdapterPosition(position);
if (item instanceof PostAdapter.PostViewHolder) {
viewHolder = (PostAdapter.PostViewHolder) item;
viewHolder.getChildView().getLocationInWindow(location);
if (location[1] < 0 || location[1] > scrollBounds.bottom) {
// Not visible
} else {
// Visible
// How to call the RecyclerView adapter here and be able to manipulate it?
// Custom listener, direct call to ViewHolder, or some other method?
}
}
}
}
谢谢!
【问题讨论】:
-
如果它是可见的,你想做什么?
标签: android android-recyclerview