滚动后列表中的ListView位置

时间:2014-02-10 10:12:28

标签: android

如果在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}}

2 个答案:

答案 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方法将为您提供可见项目的数量,第一个项目的索引以及列表的总项目,知道这一点,您应该能够确定元素何时滚动到某个位置。