Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题

Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题

问题描述

相信很多做过Viewpager的人肯定遇到过这个问题,这个是bug还是Android就是如此设计的,我们不做讨论。总之,它确实影响我们功能的实现了。

可能不少同学选择为Viewpager重新设置一遍适配器adapter,达到刷新的目的。但是这种方法在大多数情况下,是有问题的。

解决办法

以我们可以尝试着修改适配器的写法,覆盖getItemPosition()方法,当调用notifyDataSetChanged时,让getItemPosition方法人为的返回POSITION_NONE,从而达到强迫viewpager重绘所有item的目的。

具体代码如下:

class SearchAdapter extends PagerAdapter { private int mChildCount = 0; @Override public void notifyDataSetChanged() { mChildCount = getCount(); super.notifyDataSetChanged(); } @Override public int getItemPosition(Object object) { if ( mChildCount > 0) { mChildCount --; return POSITION_NONE; } return super.getItemPosition(object); } }

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-10-26 04:34:44

Android 中解决Viewpage调用notifyDataSetChanged()时界面无刷新的问题的相关文章

Android 中读取SD卡文件时抛出NullPointerException错误解决办法

Android 中读取SD卡文件时抛出NullPointerException错误解决办法 相关源码: package com.example.musicplayer; import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import

Android中解决页签手指按下从左到右滑动的bug_Android

有一种方法可以阻止父层的View截获touch事件,就是调用 getParent().requestDisallowInterceptTouchEvent(true);方法. 一旦底层View收到touch的 action后调用这个方法那么父层View就不会再调用onInterceptTouchEvent了,也无法截获以后的action 在ViewPagerIndicator项目中找到TabPageIndicator该类,添加如下代码 @Override public boolean dispa

Android中使用Expandablelistview实现微信通讯录界面

之前的博文<Android 中使用ExpandableListView 实现分组的实例>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的仿微信APP来对ExpandableListView做一个扩展介绍,实现效果如下(通讯里使用ExpandableListView实现): 相关知识点博文链接: Android 中使用ExpandableListView 实现分组的实例 详解Android中fragment和viewpager的那点事儿 详解A

jquery实现界面无刷新加载登陆注册_jquery

官网的登陆注册每次要跳转到另一个界面,能不能做一个简单的,在界面弹出一个框框登陆,我想了想做了这么一个案例,大家来看看成不成 贴上代码,实现了在同一个弹出窗上加载了登陆注册功能!可自由点击!当然样式丑了一些!还请见谅!demo在下面 1这里是html内容 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi

Android中安装软件到模拟器时提示:INSTALL_FAILED_INSUFFICIENT_STORAGE 解决办法

原文:http://hi.baidu.com/merry6046/blog/item/b36d15807b3fb3af6d811949.html 最近在用模拟器调试android项目时,频繁出现以下错误提示: Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE Please check logcat output for more details. Launch canceled! 也知道这是空间不够用,可是就是不知道怎么解决这个问题.

在Android中实现Service动态更新UI界面(Service与主程序Activity之间的数据交互或控制)

案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务. 方案一:使用广播+Service 注册BroadcastReceiver 1.在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播. @Override protected void onStart() {//重写onStart方法 dataReceiver = new DataReceiver(); IntentFilter

.NET中如何在调用COM时得到返回参数值

    在调用COM组件接口的时候,我们一般使用Type.InvokeMember()的方法来调用.Type.InvokeMember()在调用的时候需要接受一个Object类型的数组来传递接口的参数信息.对于那些仅仅包含有[in]或ByVal的接口参数,你只要构建这样的数组,并把它传给Type.InvokeMember()即可. 如果COM组件的接口参数含有[out]或者[in,out]返回参数(在VB开发的COM组件里面是ByRef),那么,除了上面的做法之外,还得需要额外做一些工作.你必须

Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题_Android

1.原来是将EditView放到了popupwindow,发现EditView原有的复制.粘贴.全选.选择功能失效了,所以便用DialogFragment代替了popupWindow 直接上代码 ①.先看布局文件 <?xml version="." encoding="utf-"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android中解决WebView上下滑动监听问题

有些时候我们需要监听webview的滚动事件,但WebView没有直接监听滑动的方法,看WebView的源码则会发现有一个protected void onScrollChanged(int l, int t, int oldl, int oldt)方法. 这个方法.是受到保护的所以我们无法直接使用,所以我们写一个加强的WebView,重写onScrollChanged方法并利用接口回调. public class NewWebView extends WebView{ private OnSc