如果在listView
的中心上方滚动screen
项时,如何检测 @Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
int half = visibleItemCount/2;
int to = firstVisibleItem+half;
for (int i=firstVisibleItem; i<to; i++) {
// actions for item above center
Item item = (Item)adapter.getItem(i);
item.read = true;
}
adapter.notifyDataSetChanged();
}
要更改或执行某些操作?
UPD 解决方案
{{1}}
答案 0 :(得分:2)
您可以使用多种方法实现此目的。如果您的ListView
拉伸整个屏幕(即,高度设置为MATCH_PARENT
),则可以将屏幕中心确定为子项总数/ 2.使用getChildCount()方法为了这份工作。
正如Ayoub所说,您还可以使用ListView.OnScrollListener来监听ListView中的滚动更改。
如果您的ListView的高度与可用的窗口屏幕不匹配,您可以使用它来查找可用的窗口高度:
DisplayMetrics metrics = getResources().getDisplayMetrics();
int windowWidth = metrics.widthPixels;
int windowHeight = metrics.heightPixels
答案 1 :(得分:1)
您可以设置ListView.OnScrollListener,并检查您想要的项目是否在中心上方滚动。 onScroll方法将为您提供可见项目的数量,第一个项目的索引以及列表的总项目,知道这一点,您应该能够确定元素何时滚动到某个位置。