转自:http://blog.csdn.net/shineflowers/article/details/41744241

在Android中有很多时候会选择用ListView加载数据,有的是分批加载,比如每次加载20条,100条就要加载5次,如果一次性加载100条,ListView加载就会变慢,如果是有图片的话,一是浪费流量,二是item中带图片会出现错位的问题l,ListView加载数据目前好多App的做法

1. 分批加载,滑动到底部自动更新

2. 滑动到底部,手动的点击加载更多

3. 下拉刷新 + 底部加载更多

今天实现ListView滑动到底部自动更新的效果。

原理:监听ListView的滑动事件,判断ListView是否滑动到底部,然后去加载数据。

public class MainActivity extends Activity {private ListView listview;private List<String> datas;private LayoutInflater inflater;private MyAdapter adapter;private List<String>  contents;private int count = 0;private View footView;private Handler handler = new Handler();int lastItem;private RelativeLayout loading;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData();inflater = LayoutInflater.from(this);listview = (ListView) findViewById(R.id.listview);adapter = new MyAdapter();footView = inflater.inflate(R.layout.footer, null);loading = (RelativeLayout) footView.findViewById(R.id.loading);//listview的addFooterView()添加view到listview底部一定要加在listview.setAdapter(adapter);这代码前面
        listview.addFooterView(footView);listview.setAdapter(adapter);//添加listview滚动监听listview.setOnScrollListener(new OnScrollListener() {//AbsListView view 这个view对象就是listview
            @Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {if (view.getLastVisiblePosition() == view.getCount() - 1) {loadData();}}}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {lastItem = firstVisibleItem + visibleItemCount - 1 ;}});}protected void loadData() {loading.setVisibility(View.VISIBLE);handler.postDelayed(new Runnable() {@Overridepublic void run() {load();loading.setVisibility(View.GONE);adapter.notifyDataSetChanged();}}, 5000);}protected void load() {int count=adapter.getCount()+1;for(int i=count;i<count+20;i++){contents.add("加载数据:::"+i);}}private void initData() {contents = new ArrayList<String>();for(int i=1;i<20;i++){contents.add("加载数据:::"+i);}}class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return contents.size();}@Overridepublic Object getItem(int position) {return contents.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder;if(convertView==null){convertView = inflater.inflate(R.layout.item, parent, false);holder = new ViewHolder();holder.tvContent = (TextView) convertView.findViewById(R.id.tvContent);convertView.setTag(holder);}else{holder = (ViewHolder) convertView.getTag();}holder.tvContent.setText(contents.get(position));return convertView;}class ViewHolder{TextView tvContent;}}
}

转载于:https://www.cnblogs.com/bbglz/p/4721062.html

[转]ListView滚动到底部自动加载数据相关推荐

  1. 滚动到底部自动加载 html,移动端页面滚动到底部自动加载数据

    $(window).bind("scroll", function () { if(getScrollHeight() == getDocumentTop() + getWindo ...

  2. html5到底部自动加载,列表滚动到底部自动加载更多

    列表滚动到底部自动加载更多 在移动端,经常会用到列表滚动到底部,拉一下加载更多,或者点一下加载更多等等,今天我说说我的一个实现的思路. 通过监听列表的滚动时间,当用户滚动到列表的底部,并停留一小段时间 ...

  3. php滑到底部自动加载更多,ListView滑动到底部自动加载更多

    第一种 滑动的时候不会停顿 listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollSt ...

  4. 分享大麦UWP版本开发历程-03.GridView或ListView 滚动底部自动加载后续数据

    今天跟大家分享的是大麦UWP客户端,在分类.订单或是搜索时都用到的一个小技巧,技术粗糙大神勿喷. 以大麦分类举例,默认打开的时候,会为用户展示20条数据,当用户滚动鼠标或者使用手势将列表滑动到倒数第二 ...

  5. 仿新浪微博实现ListBox下拉刷新和到底部自动加载

    一.下拉刷新 下拉刷新实现思路: 1.定义一个PullDownToRefreshPanel容器控件.为它添加3种状态模板,分别是PullingDownTemplate,ReadyToReleaseTe ...

  6. html底部自动加载下一页,js页面滚动到底部时自动加载下一页数据

    一段滚动到页面底部自动加载更多数据的js代码,需要jquery.js . jquey.tmpl.js 支持 var Data = { PageCount: 1, PageSize: 30, IsCom ...

  7. C语言界面列表的滑动效果,jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)...

    本文实例讲述了jQuery+ajax实现滚动到页面底部自动加载图文列表效果.分享给大家供大家参考,具体如下: /p> "http://www.w3.org/TR/xhtml1/DTD/ ...

  8. 探索SwipeRefreshLayout配合自定义ListView完成下拉刷新、滑到底部自动加载更多

    在Android开发过程中经常需要实现上下拉刷新功能,Google推出的下拉刷新控件SwipeRefreshLayout(彩虹条),由于官方版本只有下拉刷新而没有上拉加载更多的功能,很多人也尝试在这个 ...

  9. java 滚动加载数据_[Java教程]浏览器滚动条快到底部时自动加载数据

    [Java教程]浏览器滚动条快到底部时自动加载数据 0 2015-11-30 15:00:44 1 2 3 4 5 6 ");24 main.append(" hello worl ...

最新文章

  1. ATS中的命令行工具解读
  2. python习题:修改文件里的内容
  3. SUN dataset图像数据集下载
  4. BelgiumTS交通数据集分类-pytorch版
  5. html设置团偏跟着移动,雷阵雨云团向东偏南移动,北京两地将有强降雨+7级大风+冰雹!...
  6. 安卓入门系列-02创建一个项目
  7. P4149-[IOI2011]Race【点分治】
  8. 代码 抠图_3 行 Python 代码 5 秒抠图的 AI 神器,根本无需 PS,附教程
  9. 中艺人脸识别考勤机使用方法_人脸识别考勤机的使用方法及注意事项 - 全文
  10. leetcode 旋转图像
  11. linux如何压缩数据库,linux mysql数据库压缩表空间
  12. L2-019 悄悄关注(STL)
  13. LVS负载均衡群集之NAT模型DR模型
  14. 台达伺服B2 调机杂说
  15. 谷歌被墙,如何给谷歌浏览器添加迅雷下载插件
  16. 基于Linux下的Nand (Nor) Flash读写速度测试
  17. 【计算机组成原理——定点数原码一位乘法手算】
  18. 会议论文分析-CCS21-ML增强的符号执行方法
  19. NOIP模拟赛 队爷的讲学计划
  20. Roxe:大涨时毅然销毁99% ROC 专注解决跨境汇款难题

热门文章

  1. 用python让excel飞起来 pdf_讯飞智能键盘K710 一款无网络实力依然在线的黑科技产品...
  2. hash算法_hash一致性算法
  3. impala的substr从第几位截到最后一位_冰雪奇缘2彩蛋:片名内含深意,艾莎是第13位公主象征着背叛...
  4. java 去系统运行时间,JAVA WEB获取系统运行时间
  5. scpi指令转换c语言,[C#源代码]使用SCPI指令对通讯端口(RS232/USB/GPIB/LAN)进行仪器编程...
  6. 御用导航提示提醒_汽车导航,离线和在线哪个好用?两者的区别分析
  7. matlab 三维绘图 抛光,瓷砖抛光过程建模与仿真
  8. 火绒弹窗拦截_弹窗广告的克星:火绒安全软件图文使用教程
  9. 成都信息工程大学计算机分数线,2017年成都信息工程大学录取分数线
  10. 华为交换机不同网段互访_华为交换机实现不同VLAN之间互访