在哪里网上买手机哪里最便宜比较好呢?买什么手机比较好性价比高?

Adapter中notifyDataSetChanged()不刷新GetView的问题
问题描述:在ListView的Item中,有一个按钮删除该条目,测试时发现,删除之后,没有刷新界面。notifyDataSetChanged不好用
解决办法:没刷新的问题是,notifyDataSetChanged会触发getView。在我优化getView的时候,即convertView.setTag(R.id.tag_text, holder) ;同时也把传入的View的数据源也优化了,即convertView.setTag(R.id.tag_source, source); &所以notifyDataSetChanged会判断成,数据源没有改变,所以不会刷新View。 解决办法就是不要把数据源setTag
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";android(25)
我是使用自己写的adapter,除了数据更新还需要用checkbox记录每次点击itme位置,点击的是哪一条信息,刷新完页面后之前点击的数据也要做记录,当返回来的时候还能看到之前点击的那一条数据(注意这里说记录的是每个页面上的数据,而不是记录上次点击的位子,如果记录的是位置,然后每次刷新在相同的位置数据都会记录上),还有一点数据是包含关系,每次页面刷新也是从之前数据中筛选出的。
首先我们先看SimpleAdapter中继承自BaseAdapter的两个方法:
1、public void notifyDataSetInvalidated ()
android.widget..notifyDataSetInvalidated()
Notifies the attached observers that the underlying data is no longer valid or available. Once invoked this adapter is no longer valid and should not report further data set changes.
该方法内部实现了在每个观察者上面调用onInvalidated事件。每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法。
2、public void notifyDataSetChanged ()
android.widget..notifyDataSetChanged()
Notifies the attached observers that the underlying data has been changed and any View reflecting the data set should refresh itself.
该方法内部实现了在每个观察者上面调用onChanged事件。每当发现数据集有改变的情况,或者读取到数据的新状态时,就会调用此方法。
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。
notifyDataSetInvalidated(),会重绘控件(还原到初始状态)
notifyDataSetChanged(),重绘当前可见区域
看完后还是不太明白两个刷新区别到底在哪,所说的数据源无效,到底是在什么情况下之前得数据源算是无效??
然后经过测试得出每次listview.setAdapter(myAdapter);后说明数据源是重新生成如果之前已经set过,那就是之前的数据源已经无效。
测试结果是:
1、初始化listview后通过选择设定好的条件,这时候是没有重新setadapter,更新当前的listview使用notifyDataSetChanged(),结果是页面元素改变;
2、初始化listview后通过选择设定好的条件,这时候是没有重新setadapter,更新当前的listview使用notifyDataSetInvalidated(),结果是页面元素改变;
3、初始化listview后通过选择设定好的条件,这时候重新setadapter,更新当前的listview使用notifyDataSetChanged(),结果是页面元素改变;
4、初始化listview后通过选择设定好的条件,这时候重新setadapter,更新当前的listview使用notifyDataSetInvalidated(),结果是页面元素改变;
测试完后发现几个都可以刷新。。。。。
但是。。。。我是使用自己写的adapter,除了数据更新还需要用checkbox记录每次点击itme位置,点击的是哪一条信息,刷新完页面后之前点击的数据也要做记录,当返回来的时候还能看到之前点击的那一条数据(注意这里说记录的是每个页面上的数据,而不是记录上次点击的位子,如果记录的是位置,然后每次刷新后在相同的位置数据都会记录上)
又把以上方法重新测试一遍:
1、初始化listview后通过选择设定好的条件,这时候是没有重新setadapter,更新当前的listview使用notifyDataSetChanged(),结果是页面元素改变;但是数据记录不对应,每次刷新页面在相同位置都会有记录,也就是说自定义Adapter里边有些数据改变了,但是没有更新。然后修改再测试
2、初始化listview后通过选择设定好的条件,这时候重新setadapter,更新当前的listview使用notifyDataSetChanged(),结果是页面元素改变;结果同上
3、初始化listview后通过选择设定好的条件,这时候是没有重新setadapter,更新当前的listview使用notifyDataSetInvalidated(),结果是页面元素改变;结果同上。
4、初始化listview后通过选择设定好的条件,这时候重新setadapter,更新当前的listview使用notifyDataSetInvalidated(),结果是页面元素改变;OK那条数据被点击过记录下来了。
那他们是怎么通知页面刷新和记录被点击数据呢??敬请期待。。。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:23701次
排名:千里之外
原创:36篇
(6)(1)(2)(1)(2)(5)(3)(4)(3)(6)(2)(1)(1)转自:http://blog.csdn.net/jdsjlzx/article/details/众所周知Listview和Gridview的刷新界面的方式是调用adapter.notifyDataSetChanged()进行界面刷新。但是此方法有其弊端,他是将界面中的数据全部刷新一遍,不论数据有没有变化。如果listview加载了很多的数据(如:100条)在进行刷新时就会造成很大的系统开销如何像qq空间个人动态那样点赞只刷新一条呢:主要原理:对listview的某一个item进行刷新1.要获取要刷新的item当前索引position和数据2.对获取的数据进行重置3.将重置的数据放到adapter中的数据集的原来的位置(根据position刷新原数据集的某一条数据)4.在listview中获取需要刷新的子item的view5.从更新过的数据集中获取新数据,更新viwe中的数据(handler中操作,实现界面的刷新)功能如下,代码中有详细注释: [java]
publicclassextends
privatenull private private
protectedvoid
publicvoidintlong
, item.getData() +
* 初始化数据
*/ pri i & ; i++)
* 自定义item数据类型
*/ privateint
*/ private
publicvoidint
publicvoid
activity进行调用,功能操作主要封装在adapter中如下:
publicclassextends
* listview中的数据集
*/ private
private private
* 设置listview对象
* @param lisv
*/ publicvoid
* update listview 单条数据
* @param item 新数据对象
i & mDataList.size(); i++)
privatenew
publicvoid
* 刷新指定item
* @param index item在listview中的位置
*/ privatevoidint
publiclongint
如果您想留下此文,您可以将其发送至您的邮箱(将同时以邮件内容&PDF形式发送)
相关文章推荐
(Ctrl+Enter提交) &&
已有0人在此发表见解
&在& 00:22收藏到了
&&在信息爆炸的时代,您的知识需要整理,沉淀,积累!Lai18为您提供一个简单实用的文章整理收藏工具,在这里您可以收藏对您有用的技术文章,自由分门别类,在整理的过程中,用心梳理自己的知识!相信,用不了多久,您收藏整理的文章将是您一生的知识宝库!
· 蜀ICP备号-1Adapter中notifyDataSetChanged()不刷新GetView的问题
Adapter中notifyDataSetChanged()不刷新GetView的问题
发布时间: 3:21:15
编辑:www.fx114.net
本篇文章主要介绍了"Adapter中notifyDataSetChanged()不刷新GetView的问题",主要涉及到Adapter中notifyDataSetChanged()不刷新GetView的问题方面的内容,对于Adapter中notifyDataSetChanged()不刷新GetView的问题感兴趣的同学可以参考一下。
问题描述:在ListView的Item中,有一个按钮删除该条目,测试时发现,删除之后,没有刷新界面。notifyDataSetChanged不好用
解决办法:没刷新的问题是,notifyDataSetChanged会触发getView。在我优化getView的时候,即convertView.setTag(R.id.tag_text, holder) ;同时也把传入的View的数据源也优化了,即convertView.setTag(R.id.tag_source, source); &所以notifyDataSetChanged会判断成,数据源没有改变,所以不会刷新View。 解决办法就是不要把数据源setTag
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

我要回帖

更多关于 网上买手机哪里最便宜 的文章

 

随机推荐