当前位置: 首页 > 编程笔记 >

Android ViewPager动态加载问题

笪欣嘉
2023-03-14
本文向大家介绍Android ViewPager动态加载问题,包括了Android ViewPager动态加载问题的使用技巧和注意事项,需要的朋友参考一下

今天做项目时,纠结了很久,动态添加view,刚开始按照其他的adapter处理,但是不会刷新view,来回翻几页,还会view覆盖,最后手动调用adapter的destroyItem和instantiateItem方法,还是不行,最后重写notifyDataSetChanged中removeAllViews和instantiateItem,有点效果,可是还是不理想。最后查询资料要重写PagerAdapter的方法

如下:

public int getItemPosition(Object object) { 
      return POSITION_NONE; 
    } 

,然后刷新数据的时候先removeAllViews,然后重新设置数据,最后notifyDataSetChanged,就成了。

     但是在重新加载数据的时候notifyDataSetChanged之后会调用destroyItem,这个时候就会出问题,destroyItem记录的views的索引是大于0的,但是重新加载的views的count为1的时候,这是removeView的时候会出现数组越界错误,处理方法就是

@Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
      if (getCount() > 1) { 
        ((GridViewPager) arg0).removeView(((GridViewPager) arg0) 
            .getViewList().get(arg1)); 
      } 
    } 

做完了,很郁闷,到底是第三方那个的控件,还没有完善,不想其他的Adapter那么好。通过此文章记录这次的郁闷之旅,呵呵。

以上所述是小编给大家介绍的Android ViewPager动态加载问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 问题内容: 我正在尝试为我的网站创建页面主题功能。我想使用单独的CSS文件在页面上动态加载相应的主题。 我正在使用此代码: 效果很好,但是如果CSS文件未加载,它不会返回任何信息。 加载时,有什么方法可以捕捉吗?也许通过使用ajax? 问题答案: 加载CSS文件(或其任何其他更改)时,Internet Explorer会触发一个事件。其他浏览器不会触发任何事件,因此您将必须手动检查样式表是否已加载

  •  说明 调用方法: $.f2e.util.getScript(url,cache,fn); 函数说明: 加载js,并提供相关回调 参数说明: 参数名 类型 说明 备注 url string 地址 无 cache boolean 缓存 无 fn function 回调函数 无 脚本 <script> $.f2e.util.getScript(url,true,function(){

  • 初始: 可以使用,但 vite 有警告: 移动文件并改为: vite 没有警告了,但浏览器控制台报错: 或是 不移动 文件改为: 都不行,这是为什么? 如何处理?

  • 我想用我的GPU做Tensorflow。 我试过了,在只使用CPU的安装中无法加载动态库cudart64_101.dll。 不幸的是,我不断得到一个错误<代码>无法加载动态库' cudart 64 _ 110 . dll ';dlerror:找不到cudart 64 _ 110 . dll 。我该如何解决这个问题?Python版本:3.8.3,CUDA 10.1

  • 我知道如何加载CSS。 怎么卸载?

  • 问题内容: 我查找了语法并搜索了api,但仍然对该过程感到困惑。我还搜索了Stackoverflow。加载类并从中动态创建对象的正确方法是什么?换句话说,我希望用户指定要创建的对象类型,然后创建该类型的对象。我不需要菜单,因为我希望他们能够选择当前目录中的任何类。 问题答案: 假设该类具有无参数构造函数,则最简单的方法是- 参考-java.lang.Class