闲来无事,写点水文吧!有用得着的可以参考下,无刷新更新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. hdu 3974 线段树 将树弄到区间上

    Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. 一起来Fit TDMA over WiFi(1)

    1 概述 WiFI TDMA领域,2009年Sam  Leffler在<TDMA for Long Distance Wireless Networks>首次系统提出了TDMA技术方案,并 ...

  3. 在 telnet 中利用HTTP协议传递GET、POST参数

    HTTP协议不仅可以用在浏览器中,还可以用在任何支持它的地方,平时用浏览器访问网站时HTTP协议内容是隐藏起来看不到的,用 telnet 就能揭开它的神秘面纱.telnet 开启方法参考文章末尾——t ...

  4. 如何在Eclipse中快速添加main方法

    在创建类时自动添加,只需要勾选"public static void main(String[]   args)"

  5. html文本encode后,js获取参数失败的bug

    html中的空格encodeURIComponent后变成%C2%A0,而js中的空格是'%20',二者无法匹配,所以要进行一次替换

  6. UML总结4---UML九种图关系说明

    转自:http://blog.csdn.NET/chenyujing1234/article/details/8173519 UML中包括九种图:用例图.类图.对象图.状态图.时序图.协作图.活动图. ...

  7. 解决Popup StayOpen=true时,永远置顶的问题

    Popup设置了StayOpen=true时,会置顶显示. 如弹出了Popup后,打开QQ窗口,Popup显示在QQ聊天界面之上. 怎么解决问题? 获取绑定UserControl所在的窗口,窗口层级变 ...

  8. php闭包类外操作私有属性

    Closure::bind() Closure::bindTo(); class person{ private $age; private $sex; public function __const ...

  9. android基础-界面开发注意事项

    做安卓开发时一定要注意,主线程不能更改UI界面,如果出现程序运行时崩溃的情况,如果没有明显的语法错误,请检查自己的进程是否出现冲突,崩溃.如果有与后台的连接,即请求向服务器发送请求的时尤其需要注意,或 ...

  10. 原生JS实现圆周运动

    <body> <div id="ball" style="width:20px; height:20px; background:red; border ...