今天做项目时,纠结了很久,动态添加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的时候会出现数组越界错误,处理方法就是

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

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

 

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. android 窗口背景透明方法
  4. Android(安卓)View 事件分发机制流程
  5. SqliteGen——自动生成 SQLite 数据库的访问类
  6. Android图片选择器功能
  7. 探究为何:在onCreate中通过View.post能获取宽高
  8. Android(安卓)wpa_cli 调试方法(adb shell 命令)
  9. Android四大组件之ContentProvider(一)

随机推荐

  1. sql将时间类型转换为字符串类型汇总
  2. 判断数据库表是否存在以及修改表名的方法
  3. sum(case when then)(判断男女生的个数)
  4. 获取MSSQL 表结构中字段的备注、主键等信
  5. SQL排除重复结果只取字段最大值分享
  6. SQLSERVER 根据地图经纬度计算距离差示例
  7. SQL 查询和删除重复字段数据的方法
  8. 分享Sql日期时间格式转换
  9. 如何恢复数据库的账号 登录名/用户名等
  10. 完美解决SQL server2005中插入汉字变成问