闲来无事,写点水文吧!有用得着的可以参考下,无刷新更新listview是什么意思呢?举个例子,在订单类listview列表中,常常会有各种订单状态,拿商城类app来说,会有待付款,待收货,确认收货等等状态,当我们想要在列表中改变某个订单的状态,如点击“确认收货”->到“订单完成”状态,但又不是通过重新调用api来刷新listview,如何实现呢?

有些对用户体验要求高的产品经理,会对你做出这样的要求:当我在订单列表界面往上滑动了n条记录后,更改了一个订单状态,待该订单状态更新完毕,仍然保持当前界面不动,意思是这个被更新的订单原来在什么位置显示着,现在仍在什么位置!

我们可以想象一下,如果重新请求接口,一是重新请求需要耗时;二是重新加载listview的话不又跑到最顶上了吗,我向上滑动了那么多页,状态一变又回到了顶部,我是不是还要再一页一页的往下找?这样体验肯定是不怎么好的!可能有同学会这样做,监听listview滑动的位置,刷新完后再移动到上次滑动的位置不就行了吗?这样做固然可以,但是如果因为分页,已经滑动了很多页了,再请求时是从第一页开始的,那么listview还是否能移动到上次保存的位置呢?——其实这个问题也可以解决,但是无论怎样,这样做看上去是不是非常麻烦?即浪费流量,又多增加服务器压力,客户端体验也有所下降!那还有没有更好的办法呢?答案当然是有的,也就是这篇文章所讲方法!

效果图: 

关键代码:

orderAdapter=new OrderAdapter(this, listOrder, new OrderAdapter.OnClickBtnListener() {
            @Override
            public void onClick(int position) {
                Order order=listOrder.get(position);
                order.setStatus("1");//更新状态
                //无刷新更新listview重要步骤
                listOrder.remove(position);
                listOrder.add(position,order);
                orderAdapter.notifyDataSetChanged();
            }
        });

是不是很简单啊~,只需要更新list中需改变状态的position位置的bean即可!当然这中方法也不是万能的,要注意使用场景!

本demo中也包含了如何使用回调接口来处理item上按钮的点击事件,适合新手学习!

ASdemo地址:http://download.csdn.net/detail/baiyuliang2013/9486940

无刷新更新listview的更多相关文章

  1. [转]jquery 点击表格变为input可以修改无刷新更新数据

    原文地址:http://www.freejs.net/article_biaodan_43.html 之前已经发了2篇类似的文章<点击变td为input更新>和<jquery表格可编 ...

  2. window.history.pushState与ajax实现无刷新更新页面url

    ajax能无刷新更新数据,但是不能更新url HTML5的新API: window.history.pushState, window.history.replaceState 用户操作history ...

  3. jquery表格可编辑修改表格里面的值,点击td变input无刷新更新表格

    td点击后变为input可以输入,更新数据,无刷新更新 演示 XML/HTML Code <table border="0" cellpadding="0" ...

  4. AjaxPro实现无刷新更新数据

    使用AjaxPro实现无刷新更新数据 需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(J ...

  5. 使用AjaxPro实现无刷新更新数据

    需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(JQuery等)动态更新web页面DOM ...

  6. 利用history.pushState()实现页面无刷新更新

    本来是在研究vue-router如何记录滚动位置,点返回的时候还是回到原来的位置,看到有人说的history.state存了一个值,才把history研究一下,发现 history.pushState ...

  7. 使用Jquery的Ajax实现无刷新更新,修改,删除页面

    本文将向大家讲述一下最近工作的一些总结,主要包括了以下内容,注册界面以及详细信息界面的编辑.主要是介绍了AJAX技术,因为我觉得其他方面没什么好介绍的.首先是跟大家说一下Ajax的优点,假如你删除了一 ...

  8. HTML5 API——无刷新更新地址 history.pushState/replaceState 方法

    尽 管是上面讲到的<JavaScript高级程序设计>(第二版)中提到,BOM中的location.path/query…… (window.location)在通过JavaScript更 ...

  9. (一)HTML5 - pushState 无刷新更新地址

    可以解决什么问题: 可以实现网页的ajax加载,同时又能完成URL的改变而没有网页跳转刷新的迹象,就像是改变了网页的hash(#)一样. 优于hash: 避免了改变hash的问题,避免了用户不理解UR ...

随机推荐

  1. bzoj1094[ZJOI2007]粒子运动 计算几何

    1094: [ZJOI2007]粒子运动 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 658  Solved: 164[Submit][Status ...

  2. bzoj3156防御准备 斜率优化dp

    3156: 防御准备 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 2279  Solved: 959[Submit][Status][Discuss ...

  3. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  4. candy(动态规划)

    题目描述 There are N children standing in a line. Each child is assigned a rating value. You are giving ...

  5. Delphi Inputbox,InputQuery用法

    Delphi :InputQuery,InputBox用法及区别 function InputQuery(const ACaption, APrompt: string; var Value: str ...

  6. 第三次C语言作业

    (一)改错题 计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数. 输入输出样例1: Enterr x: 10.0 f(10.0) = 0.1 输入输出样例2: En ...

  7. mongo索引

    索引自动创建和手工创建 db.stu.drop(); db.stu.insert({"name":"张三","sex":"男&qu ...

  8. 编程英语之KNN算法

    School of Computer Science The University of Adelaide   Artificial Intelligence Assignment 2   Semes ...

  9. ACM Robot Motion

      机器人已被编程为按照其指令中的路径进行操作.机器人要移动的下一个方向的指令放在网格中.可能的指令是 N north (up the page) S south (down the page) E ...

  10. MongoDB Limit与Skip方法

    MongoDB Limit() 方法 如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的 ...