我正在编写一个具有视频ListView的应用程序,并且如果用户播放其中一个视频并滚动列表,以使该特定视图在屏幕上不再可见,则必须暂停视频,并应将MediaPlayer暂停已发布。
所以我的问题是,有什么方法可以知道一个视图已在ListView中滚动出来,而不是在ScrollView中吗?
谢谢。
答案 0 :(得分:0)
这对我有用:
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
//if the result is false so mediaPlayer must be released
if (videoCurrentPosition != -1 && !checkExistence(firstVisibleItem, visibleItemCount)) adapter.releaseMediaPlayer();
}
});
videoCurrentPosition显示我单击的项目的位置。设置为-1,因为适配器中的位置从0开始。
private Boolean checkExistence(int firstVisibleItem, int visibleItemCount) {
for (int i = firstVisibleItem; i <= (firstVisibleItem + visibleItemCount - 1); i++) {
// if it's true so our view is inside the list (on screen now)
if (videoCurrentPosition == i) return true;
}
// if it's false so our view is'nt inside the list (not screen now)
return false;
}