我想找出与ListView's
项目相关的位置或ID:只显示在屏幕上完全可见的那些位置。
使用listview.getFirstVisibleposition
和listview.getLastVisibleposition
会考虑部分列表项。
答案 0 :(得分:3)
我遵循了Rich建议的一些类似的方法,以满足我的要求,即每次滚动列表视图时都会在屏幕上获取完全可见的项目。
这就是我做的
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//Loop to get tids of all completely visible List View's item scrolled on screen
for (int listItemIndex = 0; listItemIndex <= getListView().getLastVisiblePosition() - getListView().getFirstVisiblePosition(); listItemIndex++) {
View listItem = getListView().getChildAt(listItemIndex);
TextView tvNewPostLabel = (TextView) listItem.findViewById(R.id.tvNewPostLabel);
if (tvNewPostLabel != null && tvNewPostLabel.getVisibility() == View.VISIBLE) {
int listTid = (int) tvNewPostLabel.getTag();
if (listItem.getBottom() < getListView().getHeight()) {//If List View's item is not partially visible
listItemTids.add(listTid);
}
}
}
}
答案 1 :(得分:1)
我没有尝试过这个,但是我认为这些框架可以让你找到你想要的东西(至少这是我先试试的)
ListView.getLastVisiblePosition()
ListView.getChildAt(position)
View.getLocationOnScreen(location)
和View.getHeight()
View.getLocationOnScreen(location)
和View.getHeight()
。 y + height
的{{1}}应该小于或等于View
的{{1}},如果它完全可见的话。