android listview 向上滚动,在ListView中检测向上滚动和向下滚动

这是一个简单的实现:

lv.setOnScrollListener(new OnScrollListener() {

private int mLastFirstVisibleItem;

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem,

int visibleItemCount, int totalItemCount) {

if(mLastFirstVisibleItem

{

Log.i("SCROLLING DOWN","TRUE");

}

if(mLastFirstVisibleItem>firstVisibleItem)

{

Log.i("SCROLLING UP","TRUE");

}

mLastFirstVisibleItem=firstVisibleItem;

}

});

如果需要更高的精度,可以使用此自定义ListView类:

import android.content.Context;

import android.util.AttributeSet;

import android.view.View;

import android.widget.AbsListView;

import android.widget.ListView;

/**

* Created by root on 26/05/15.

*/

public class ScrollInterfacedListView extends ListView {

private OnScrollListener onScrollListener;

private OnDetectScrollListener onDetectScrollListener;

public ScrollInterfacedListView(Context context) {

super(context);

onCreate(context, null, null);

}

public ScrollInterfacedListView(Context context, AttributeSet attrs) {

super(context, attrs);

onCreate(context, attrs, null);

}

public ScrollInterfacedListView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

onCreate(context, attrs, defStyle);

}

@SuppressWarnings("UnusedParameters")

private void onCreate(Context context, AttributeSet attrs, Integer defStyle) {

setListeners();

}

private void setListeners() {

super.setOnScrollListener(new OnScrollListener() {

private int oldTop;

private int oldFirstVisibleItem;

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

if (onScrollListener != null) {

onScrollListener.onScrollStateChanged(view, scrollState);

}

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

if (onScrollListener != null) {

onScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);

}

if (onDetectScrollListener != null) {

onDetectedListScroll(view, firstVisibleItem);

}

}

private void onDetectedListScroll(AbsListView absListView, int firstVisibleItem) {

View view = absListView.getChildAt(0);

int top = (view == null) ? 0 : view.getTop();

if (firstVisibleItem == oldFirstVisibleItem) {

if (top > oldTop) {

onDetectScrollListener.onUpScrolling();

} else if (top < oldTop) {

onDetectScrollListener.onDownScrolling();

}

} else {

if (firstVisibleItem < oldFirstVisibleItem) {

onDetectScrollListener.onUpScrolling();

} else {

onDetectScrollListener.onDownScrolling();

}

}

oldTop = top;

oldFirstVisibleItem = firstVisibleItem;

}

});

}

@Override

public void setOnScrollListener(OnScrollListener onScrollListener) {

this.onScrollListener = onScrollListener;

}

public void setOnDetectScrollListener(OnDetectScrollListener onDetectScrollListener) {

this.onDetectScrollListener = onDetectScrollListener;

}

public interface OnDetectScrollListener {

void onUpScrolling();

void onDownScrolling();

}

}

使用示例:(不要忘记将其作为Xml标签添加到您的layout.xml中)

scrollInterfacedListView.setOnDetectScrollListener(new ScrollInterfacedListView.OnDetectScrollListener() {

@Override

public void onUpScrolling() {

//Do your thing

}

@Override

public void onDownScrolling() {

//Do your thing

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值