当前位置: 首页 > news >正文

英文淘宝网站建设wordpress 4.5 中文版

英文淘宝网站建设,wordpress 4.5 中文版,小程序注册商标第几类,wordpress优惠券网上关于 ViewPager 的用法、源码解析已经讲的很多了。但生产环境中#xff0c;我们可能会遇到各种奇怪的问题。这篇文章将会聊聊自己遇到的比较奇怪的异常情况#xff0c;并讲述分析思路与源码解析。 循环切换 viewpager 异常 从视频中可以看到#xff0c;当切换到 4 的时…        网上关于 ViewPager 的用法、源码解析已经讲的很多了。但生产环境中我们可能会遇到各种奇怪的问题。这篇文章将会聊聊自己遇到的比较奇怪的异常情况并讲述分析思路与源码解析。 循环切换 viewpager 异常 从视频中可以看到当切换到 4 的时候继续向右切换却变成了1。用户就会感觉“鬼打墙了”永远在这几个数据里面循环起来。 从复现的路径上可以看出当切换到 4 的时候下方的Navigation切换到了 0但 viewPager 本身没有什么变化。 进一步的思考排查setCurrentItemInternal的调用位置 setAdapter dataSetChanged onResotreInstanceState onTouchEvent endFakeDrag 1 是初始化 adapter 的时候调用的很明显不是这里的问题3 是恢复的时候。5 很明显也不是出问题的地方只有 2 或者 4。4 是拖动的时候触发的这里看起来是切换过去以后才出问题。先不查它后面再说。 那么 dataSetChanged 的嫌疑最大。 class VerticalViewPager {void dataSetChanged() {boolean isUpdating false;for (int i 0; i mItems.size(); i) {final ItemInfo ii mItems.get(i);final int newPos mAdapter.getItemPosition(ii.object);if (ii.position ! newPos) {if (ii.position mCurItem) {// Our current item changed position. Follow it.newCurrItem newPos;}ii.position newPos;needPopulate true;...}if (needPopulate) {// Reset our known page widths; populate will recompute them....if (mSuspendOnePopulate) {// do nothing} else {setCurrentItemInternal(newCurrItem, false, true);}requestLayout();}} }class xMAdapter {override fun getItemPosition(any: Any): Int {items.forEachIndexed { index, view -if (view (object as? View)?.tag) {return index}}return POSITION_NONE} } 上述代码中删除了无关的代码。可以发现这里有一个非常可能导致问题的地方就是  final int newPos mAdapter.getItemPosition(ii.object);可以看到源码中使用 tag 去mAdapter 中去寻找 position。这就导致了一个问题当列表中存在多个相同 tag, 且下标不一样的时候会存在 position 查找错误的可能。举例说明。 当数据是【】表示 items 中的数据 0 1 2 3 4 5 6 【7 8 9】 的时候。当前视频是 8 当从 8 - 9以后。 0 1 2 3 4 5 6 7 【8 9 10】 此时新来了一批数据触发了 loadMoreResult接着触发 dataSetChanged。 从代码中可以看到此时会遍历items然后从 mAdapter 种获取 newPos 的位置。问题来了此时下标 1、9 的tag是一个这时候遍历 mAdapter 会先返回前者也就是返回了 1。明明在 9 位置却返回了 1。接着会执行 setCurrentItemInternal-populate-addNewItem。从这里就全错了数据变成了 【0 1 2】 3 4 5 6 8 9 10。继而循环了。 所以出现该问题的路径可能有一下两种情况 服务端同一刷下发了两个相同的视频 有人在 mAdapter 中插入或者 替换了之前已经存在的视频 解决思路 禁止 mAdapter 中出现重复的数据禁止 index 返回出现问题修改 getItemPosition 的逻辑反向遍历优先拿后者 用户反向滑动的时候可能会出现问题又业务逻辑来判断是否采取这种方式解决。 无法切换 其实原理一样不想写了。
http://www.huolong8.cn/news/73659/

相关文章:

  • 网络网站维护费怎么做会计分录机关门花网站建设
  • 网站开发培训用vps做网站
  • 半岛官方网站下载wordpress删除首页
  • 深圳建设交易中心网站市场营销专业网站
  • 望牛墩镇做网站微信小程序商店怎么开
  • 做惠而浦售后网站赚钱软件接口设计文档
  • 南京建设厅官方网站合肥瑶海区房子值得买吗
  • 网站正在建设中页面 英文翻译企业建立网站的目的
  • 谷歌网站建设wordpress添加新页面
  • 百度如何把网站做链接地址网站的总体风格包括
  • 河南科技园网站建设芜湖做网站公司
  • 合肥模板建站多少钱扬州市工程信息网
  • 球迷类的网站如何做学信网登录
  • 做网站公司是干什么的湖北高端网站建设
  • 网站使用功能介绍是用什么软件做的公司网站开发 nodejs
  • 手机上的网站是怎么做的wordpress搜索排序
  • 做化工的网站重庆博建设计院公司是网站
  • 网站建设开源节流百度关键词规划师
  • 企业网站案例建设要求python做网站性能怎么样
  • 深圳制作网站有用吗大学两学一做专题网站
  • 湖南常德广宇建设网站做网站怎么制作
  • 深圳市网站建设哪家好做高端网站公司
  • 广东省建设工程协会网站做培训网站哪家好
  • 潍坊网站建设哪家专业长沙网页制作模板的网站
  • 做网站得先注册域名吗大连 网站开发
  • 公司域名备案网站名称做网站服务好
  • 承包酒席可以做网站吗网站流量少怎么办
  • 如何看网站点击量佛山新网站建设机构
  • 火车头采集做网站赚钱免费的个人简历模板excel
  • 珠海市住房和城乡建设部网站世界街景地图怎么退订