ScrollView嵌套listView 获取item移出屏幕的数量

本文介绍如何通过自定义ScrollView解决嵌套ListView时ScrollView获取焦点的问题,导致无法正确使用ListView自带方法。通过创建自定义ScrollView类,监听滑动距离,并在Activity中实现滑动方法,从而准确获取item移出屏幕的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ScrollView 嵌套ListView 会使ScrollView 获取焦点,所以不能使用ListView自带的方法来获取item移出屏幕的数量

首先 第一步,自定义scrollView (这个类复制就好)

 

public class MyScrollView extends ScrollView {

    private OnScrollListener listener;

    /**
     * 设置滑动距离监听器
     */
    public void setOnScrollListener(OnScrollListener listener) {
        this.listener = listener;
    }

    public MyScrollView(Context context) {
        super(context);
    }

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    // 滑动距离监听器
    public interface OnScrollListener{

        /**
         * 在滑动的时候调用,scrollY为已滑动的距离
         */
        void onScroll(int scrollY);
    }

    @Override
    public void computeScroll() {
        super.computeScroll();
        if(listener!=null){
            listener.onScroll(getScrollY());
        }
    }
}

 

第二步 获取你的item的高度 (获取高度的代码必须在listView已经绘制完成后在可以调用,不然会出现异常。)

ListAdapter listAdapter = listView.getAdapter();  
    if (listAdapter == null) { 
        return; 
    } 
View listItem = listAdapter.getView(0, null, listView); 
listItem.measure(0, 0); 
int height=listItem.getMeasuredHeight();

这个height 便是listView item 的height

 

第三步 在用到的activity中实现ScrollView的滑动方法

ScrollView.setOnScrollListener(new MyScrollView.OnScrollListener() {
    @Override
    public void onScroll(int scrollY) {
        scrollY = scrollY / height;   //listView item 的height
        Log.e("tag","ScrollY==="+scrollY);    //移出屏幕的数量
       
    }
});

完成!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值