2014-02-10 64 views
3

如何检测listView项目以便在滚动至screen的中心位置时更改或执行某些操作?ListView在滚动后的列表位置

UPD解决方案

@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(); 
    } 

回答

1

您可以设置ListView.OnScrollListener,并检查项目你想上面的滚动中心。 onScroll方法将为您提供可见的项目数量,第一个项目的索引和列表的总项目,因为您知道这应该能够确定元素在某个位置上滚动的时间。

2

您可以使用多种方法实现此目的。如果您的ListView拉伸整个屏幕(即高度设置为MATCH_PARENT),则可以将屏幕中心确定为儿童总数/ 2.使用getChildCount()方法可以执行此作业。

正如Ayoub所说,您还可以使用ListView.OnScrollListener来侦听ListView中的滚动更改。

如果你的ListView的高度不匹配可用的窗口画面,你可以用它来查找可用的窗口高度:

DisplayMetrics metrics = getResources().getDisplayMetrics(); 
int windowWidth = metrics.widthPixels; 
int windowHeight = metrics.heightPixels 
相关问题