扫码关注官方订阅号
类似网易新闻的多tab app。每个tap对应一个列表,当用户滑动完成或者点击的时候才去加载对应的数据,应该怎么实现呢,没有找到合适的回调方法。
认证0级讲师
首先,推荐用ViewPager+TabLayout做界面。然后,用一个List来保存标志,标志表示该Page是否加载过数据。其次,为ViewPager添加OnPageChangeListener监听者,当Page页面改变时,并且该Page页面还没有加载过数据时,该Page页面开始加载数据。最后,调用viewpager.getCurrentItem(),获取该index对应Page的标志,并且该Page页面还没有加载过数据时,该Page页面开始加载数据。
OnPageChangeListener
viewpager.getCurrentItem()
一般每个Tab列表下都是一个Fragment 所以可以在启动Fragment的onCreateView()中进行相应Tab下的数据请求。
如果是像ListView这种滑动到底部再继续加载的话。可以这样,在你给ListView设置adapter的时候,先把你的数据集合传过去,adapter的getCount()方法返回一个可变参数showCoun可以设置一个初始值,比如说20。然后再给ListView设置一个OnScrollerListener,重写onScrollStateChanged()方法,具体像下面这样listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override public void onScrollStateChanged(AbsListView view, int scrollState) { if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE){ //判断是否滑动到底部 if(view.getLastVisiblePosition() == showCount -1){ if(showCount < urlStrings.length - 10){ showCount += 10; } else{ showCount = items.length; } adapter.notifyDataSetChanged(); } } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } });
adapter可以这样 private class ListViewAdapter extends BaseAdapter{
private String[] strings; public ListViewAdapter(String[] strings){ this.strings = strings; } @Override public int getCount() { return showCount; } ...... }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先,推荐用ViewPager+TabLayout做界面。
然后,用一个List来保存标志,标志表示该Page是否加载过数据。
其次,为ViewPager添加
OnPageChangeListener
监听者,当Page页面改变时,并且该Page页面还没有加载过数据时,该Page页面开始加载数据。最后,调用
viewpager.getCurrentItem()
,获取该index对应Page的标志,并且该Page页面还没有加载过数据时,该Page页面开始加载数据。一般每个Tab列表下都是一个Fragment 所以可以在启动Fragment的onCreateView()中进行相应Tab下的数据请求。
如果是像ListView这种滑动到底部再继续加载的话。可以这样,在你给ListView设置adapter的时候,先把你的数据集合传过去,adapter的getCount()方法返回一个可变参数showCoun可以设置一个初始值,比如说20。然后再给ListView设置一个OnScrollerListener,重写onScrollStateChanged()方法,具体像下面这样
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
adapter可以这样
private class ListViewAdapter extends BaseAdapter{