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

如何进行优化seo网站优化系统

如何进行优化,seo网站优化系统,鲅鱼圈网站在哪做,明星用什么软件做视频网站报错截图#xff1a;场景介绍#xff1a;在使用recycleView 自动递增数据#xff0c;且自动滚动到最新行#xff1b; 当数据达到273条 时出现ANR#xff1b;项目中 全部的列表适配器使用的三方库#xff1a;BaseRecyclerViewAdapterHelper #xff08;很早之前的项目场景介绍在使用recycleView 自动递增数据且自动滚动到最新行 当数据达到273条 时出现ANR项目中 全部的列表适配器使用的三方库BaseRecyclerViewAdapterHelper 很早之前的项目代码public class LogRecyclerViewAdapter extends BaseQuickAdapterLogBean,BaseViewHolder {public LogRecyclerViewAdapter(int layoutResId, Nullable ListLogBean data) {super(layoutResId, data);}// 避免布局错乱Overridepublic int getItemViewType(int position) {Log.d(TAG, getItemViewType1111: position);return position;}Overrideprotected void convert(BaseViewHolder helper, LogBean item) {String title item.getTitle();String msg item.getMsg();helper.setText(R.id.log_title_txt,title);helper.setText(R.id.log_msg_txt,msg);// 设置异常字体颜色if(msg.contains(异常)||msg.contains(中断)||msg.contains(失败)){helper.setTextColor(R.id.log_title_txt,Color.parseColor(#FF2C00));helper.setTextColor(R.id.log_msg_txt, Color.parseColor(#FF2C00));}} }解决 根据报错提示百度后解决 需要注释掉重写的getItemViewType 函数其实是一个三方库的bug可参考https://blog.csdn.net/lovelixue/article/details/103641023为知其所以然 继续跟踪代码进入适配器继承的父类BaseQuickAdapter该类继承自RecyclerView.AdapterK 找到重写的getItemViewType 函数getItemViewType的返回值 当有其他布局头部脚部或空布局时候返回值各自的常量项目只是单item 没有添加其他View 代码会走return getDefItemViewType(adjPosition);该方法会重新定义getItemViewType的值而该值是position变量 Overridepublic int getItemViewType(int position) {if (getEmptyViewCount() 1) {boolean header mHeadAndEmptyEnable getHeaderLayoutCount() ! 0;switch (position) {case 0:if (header) {return HEADER_VIEW;} else {return EMPTY_VIEW;}case 1:if (header) {return EMPTY_VIEW;} else {return FOOTER_VIEW;}case 2:return FOOTER_VIEW;default:return EMPTY_VIEW;}}int numHeaders getHeaderLayoutCount();if (position numHeaders) {return HEADER_VIEW;} else {int adjPosition position - numHeaders;int adapterCount mData.size();if (adjPosition adapterCount) {return getDefItemViewType(adjPosition);} else {adjPosition adjPosition - adapterCount;int numFooters getFooterLayoutCount();if (adjPosition numFooters) {return FOOTER_VIEW;} else {return LOADING_VIEW;}}}}protected int getDefItemViewType(int position) {if (mMultiTypeDelegate ! null) {return mMultiTypeDelegate.getDefItemViewType(mData, position);}return super.getItemViewType(position);} 回到LogRecyclerViewAdapter 类中 业务代码在convert函数中实现 跟踪该函数发现在BaseQuickAdapter中被onBindViewHolder调用代码如下它会获取holder的getItemViewType 其值的已经分析过 取自position 每次源数据新增一条position就会随之递增其实报错的时候还没有执行到该函数我们需要查看recycleView的源码 执行该方法之前还执行了onCreateViewHolder 函数。 Overridepublic void onBindViewHolder(K holder, int position) {//Add up fetch logic, almost like load more, but simpler.autoUpFetch(position);//Do not move position, need to change before LoadMoreView bindingautoLoadMore(position);int viewType holder.getItemViewType();switch (viewType) {case 0:convert(holder, getItem(position - getHeaderLayoutCount()));break;case LOADING_VIEW:mLoadMoreView.convert(holder);break;case HEADER_VIEW:break;case EMPTY_VIEW:break;case FOOTER_VIEW:break;default:convert(holder, getItem(position - getHeaderLayoutCount()));break;}}Overridepublic K onCreateViewHolder(ViewGroup parent, int viewType) {K baseViewHolder null;this.mContext parent.getContext();this.mLayoutInflater LayoutInflater.from(mContext);switch (viewType) {case LOADING_VIEW:baseViewHolder getLoadingView(parent);break;case HEADER_VIEW:baseViewHolder createBaseViewHolder(mHeaderLayout);break;case EMPTY_VIEW:baseViewHolder createBaseViewHolder(mEmptyLayout);break;case FOOTER_VIEW:baseViewHolder createBaseViewHolder(mFooterLayout);break;default:baseViewHolder onCreateDefViewHolder(parent, viewType);bindViewClickListener(baseViewHolder);}baseViewHolder.setAdapter(this);return baseViewHolder;}重点看下switch 方法 会逐条遍历viewType我们分别看case 条件值 分别是public static final int HEADER_VIEW 0x00000111;public static final int LOADING_VIEW 0x00000222;public static final int FOOTER_VIEW 0x00000333;public static final int EMPTY_VIEW 0x00000555;是十六进制的魔法数字 case 0 正常调用 0x00000111 转换成十进制是273 所以 当position 的值273的 时候会进入第二个条件执行createBaseViewHolder mHeaderLayout此时的参数是null该函数表示通过反射的方式获取viewhold protected K createBaseViewHolder(View view) {Class temp getClass();Class z null;while (z null null ! temp) {z getInstancedGenericKClass(temp);temp temp.getSuperclass();}K k;// 泛型擦除会导致z为nullif (z null) {k (K) new BaseViewHolder(view);} else {k createGenericKInstance(z, view);}return k ! null ? k : (K) new BaseViewHolder(view);}进入BaseViewHolder 类中该类继承自RecyclerView.ViewHolder作用是封装了各种赋值函数通过getView 获取到item的view 去赋值等。 public ViewHolder(NonNull View itemView) {if (itemView null) {throw new IllegalArgumentException(itemView may not be null);}this.itemView itemView;}终于跟踪到报错的地方了。因为当初入参是null 因此条件判断进入itemView null 就有了开始的IDE的输出报错完美的闭环如有不完善的地方譬如recycleView源码部分没有仔细说明请多多担待抱拳
http://www.w-s-a.com/news/552783/

相关文章:

  • 类似凡科互动的网站wordpress网站下载
  • 临沂网站制作公司安卓app开发实例教程
  • 泰州做网站 泰公网络科技公司网站升级中html
  • 如何做授权网站网站设计心得
  • 网站排名快速上升wordpress自动标签页
  • 做的好的手机网站有哪些万网域名交易
  • 网站怎么做漂亮点做陶瓷的公司网站
  • 软件开发设计制作网站下载自己怎么做视频收费网站
  • 江苏省建设安全协会网站天津网站建设哪家公司好
  • 资源类网站怎么做的网站上线准备工作
  • 长沙专业网站建设怎么做企业建站公司服务
  • 肇庆市有限公司网站建设手机直接看的网站有哪些
  • 织梦修改网站后备份英语作文模板高中
  • 个人网站域名用什么好上海公司拍沪牌需要什么条件
  • 网站建设 保密做网站赚钱交税
  • 食品建设网站前的市场分析进出口网站贸易平台有哪些
  • php商城网站建设个人网站用什么服务器
  • 如何做好品牌网站建设方案网站开发的学习
  • 网站开发 管理方案wordpress怎么搭建微博
  • 有哪些ui的设计网站网上商城网站建设设计方案
  • iis中怎样配置网站绑定运城可以做网站的公司
  • 品牌网站建设开发价格dedecms电影网站模板
  • 网站设计外包合同帝国网站后台认证码错误
  • 网站设计公司深圳怎么免费做公司网站
  • 90设计网站几次是什么意思swipe类网站
  • 安康微网站建设网站域名使用费用
  • 网站建设执招标评分表微信代理网站模板
  • ps做网站分辨率自适应地方网站盈利
  • 免费自助小型网站专业网站建设组织
  • 猎聘网网站建设目标查看别人wordpress主题