ListView 中判断是否滚动到底部

ListView 中判断是否滚动到底部

@[Android|ListView|OnScrollListener]

  1. 通过Adapter来判断,这个懂得用Adapter都知道啦
  2. 通过onScrollListener判断
  listView.setOnScrollListener(new AbsListView.OnScrollListener() {

            int lastScroll;
            @Override
            public void onScrollStateChanged(AbsListView view, int scrollState) {

            }

            @Override
            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
                LogUtils.i(firstVisibleItem+":"+visibleItemCount+":"+totalItemCount);
                LogUtils.i(((totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount - 1))+"");
                //firstVisiable 第一个可以看到item的index
                //(当前看到第一个item在Adapter中的排序)
                //visiableitemCount所有可以看到item数量
                //totalItemCount实际上有的item数量
                /**第一个可以看到的item的Index+
                *  +可以看到的数量等于实际上的数量的时候就是到了最后了
                **/
            }
        });

https://www.evernote.com/shard/s268/sh/0cad011a-b9ba-4dd5-9633-bc28516da352/c73bb38c3bcd5b378f11c9f4ea650682

转载于:https://www.cnblogs.com/Jabba93/p/4066988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ListView 是 Android 平台上常用的列表控件之一,它可以展示大量的数据,并且支持滚动。当我们往 ListView 添加大量数据时,可能会出现滚动卡顿等问题,这时就需要进行优化,其之一就是循环滚动。 循环滚动,即当列表滚动底部时,继续滑动,列表将从头部开始重新展示数据,从而实现无限滚动的效果。下面介绍一下 ListView 循环滚动的实现方法。 1. 首先,我们需要在 ListView 的 Adapter 进行特殊处理,将列表的数据源按照一定的规律进行循环,比如将最后一项数据插入到第一项之前,将第一项数据插入到最后一项之后。 2. 然后,在 ListView滚动监听事件,当滚动到列表底部时,将列表的滚动位置设置为 0,即回到列表头部,同时更新数据源,将最后一项数据插入到第一项之前,从而实现循环滚动。 下面是一个示例代码: ``` // 在 Adapter 进行数据源处理 @Override public int getCount() { return dataList.size() + 2; // 数据源长度需要加上两个 } @Override public Object getItem(int position) { if (position == 0) { return dataList.get(dataList.size() - 1); // 最后一项数据插入到第一项之前 } else if (position == getCount() - 1) { return dataList.get(0); // 第一项数据插入到最后一项之后 } else { return dataList.get(position - 1); } } // 在 ListView滚动监听事件进行循环滚动处理 listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // 滚动结束时判断是否滚动底部 if (scrollState == SCROLL_STATE_IDLE && listView.getLastVisiblePosition() == getCount() - 1) { // 将列表的滚动位置设置为 0,即回到列表头部 listView.setSelection(0); // 更新数据源,将最后一项数据插入到第一项之前 dataList.add(0, dataList.get(dataList.size() - 1)); dataList.remove(dataList.size() - 1); adapter.notifyDataSetChanged(); } } }); ``` 以上就是 ListView 循环滚动的实现方法,通过特殊处理数据源和滚动监听事件,可以实现无限滚动的效果,提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值