notifydatasetchanged
notifydatasetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容。
public void notifyDataSetChanged ()
该方法内部实现了在每个观察者上面调用onChanged事件。每当发现数据集有改变的情况,或者读取到数据的新状态时,就会调用此方法。
public void notifydatasetinvalidated ()
该方法内部实现了在每个观察者上面调用onInvalidated事件。每当发现数据集监控有改变的情况,比如该数据集不再有效,就会调用此方法。
今天用到listview刷新功能,之前解决都是给Listview重新负上adapter这样listview就滚动到第一条了,但是这样会有些耗内存,程序写法也不美观。理论上是这样的,需要实验一下,重要的是一下两句话!
notifyDataSetInvalidated(),会重绘控件(还原到初始状态)选项会跳转到第一项
notifyDataSetChanged(),重绘当前可见区域,停留在当前选项
项目中不需要每次都刷新,所以采用notifyDataSetChanged()
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
systemSettingListView.setSelection(position);
Fragment fragment = null;
if (position == NET_SEETING) {
fragment = new SystemSettingNetcontentFragment();;
} else if (position == ACCOUNT_SETTING) {
fragment = new SystemSettingAccountContentFragment();
} else if (position == AUDIO_SETTING) {
fragment = new SystemSettingAudioContentFragment();
} else if (position == VIDEO_SETTING) {
fragment = new SystemSettingVideoContentFragment();
} else if (position == NET_UPDATE) {
fragment = new SystemSettingUpdateContentFragment();
} else if (position == STATUS_FIND) {
fragment = new SystemsettingstatusContentFragment();
}
adapter.setSelectItem(position);
adapter.notifyDataSetChanged();
getFragmentManager().begintransaction()
.replace(R.id.system_setting_right_fragment, fragment).commit();
}
文章最后发布于: 2017-08-21 10:13:23
相关阅读
很多商家在探讨营销渠道的时候,总是会从多方面思考,当今是一个开放的社会,网络的发展也给商家带来了更多的机会。那么针对如此多的营
在寻找NSRunLoopCommonModes和NSDefaultRunLoopMode区
当实例化NSTimer对象的时候,通常会使用 scheduledTimerWithTimeInterval 方法。该方法会自动为我们实例化的timer添加到当前线程的
textContent和innerText以及innerHTML的区别,结合demo
先看看下面这个demo,不言自明: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</titl
卷积与滤波、相关的区别,以及imfilter函数、conv2函数
一、图像处理中常常需要用一个滤波器做空间滤波操作。空间滤波操作有时候也被叫做卷积滤波,或者干脆叫卷积(离散的卷积,不是微积分里
scheduleAtFixedRate 与 scheduleWithFixedDelay 的区
scheduleAtFixedRate ,是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任