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

北京建设局网站竞价托管怎么做

北京建设局网站,竞价托管怎么做,龙口做网站联系电话,云南档案馆网站建设资金RecycleView刷新某一个Item,或这某一个Item中某一个View。 这样的需求,在实际的开发中是很普遍的。 在数据变化后需要刷新列表。 刷新列表有三种方式: 前两种大家应该很熟,第三中会有点陌生。 那么这三种方式,有什…

RecycleView刷新某一个Item,或这某一个Item中某一个View。

这样的需求,在实际的开发中是很普遍的。

在数据变化后需要刷新列表。

刷新列表有三种方式:

前两种大家应该很熟,第三中会有点陌生。

 那么这三种方式,有什么却别呢?

  public void updateData() {notifyDataSetChanged();}public void updateData(int pos) {notifyItemChanged(pos);}public void updateData(int pos, Object payload) {notifyItemChanged(pos, payload);}

先看第一种:notifyDataSetChanged()

这个就属于暴力刷新了,他会刷新整个可见的item列表。刷新效率很差。我只想要更新某个Item中的TextView,但是这种方式,会导致全部Item列表重新绘制一遍。

    findViewById(R.id.button1).setOnClickListener(v -> {int pos = 0;Person person = list.get(pos);person.name = "update";person.age = 44;adapter.updateData();});public void updateData() {notifyDataSetChanged();}

从日志中可以看出来,这种刷新方式,会把所有的Item重新绘制一遍。

再看第二种刷新方式: notifyItemChanged(pos);

 findViewById(R.id.button2).setOnClickListener(v -> {int pos = 0;Person person = list.get(pos);person.name = "update";person.age = 55;adapter.updateData(pos);});public void updateData(int pos) {notifyItemChanged(pos);}

   这种方式会根据传进来的pos来刷新对应的某一个Item。但是Item中会包含其他的View,

也会导致其他的View跟着刷新,虽然有了较大的优化,但是还是有一些画蛇添足。

看日志:

从日志可以看出,的确刷只刷新了某一个Item。但是整个Item中定义的View也会跟着一起绘制,

会执行onLayout,onMeasure,onDraw三个绘制方式。

我只修改了某个View,只需要重新绘制更新的VIew就行,没有更新的不用跟着计算。

再看第三种方式,

传进去了一个标识,需要在重写onBindViewHolder的重载方法。

 findViewById(R.id.button3).setOnClickListener(v -> {int pos = 0;Person person = list.get(pos);person.name = "payload";person.age = 66;adapter.updateData(pos, "name");});
    public void updateData(int pos, Object payload) {notifyItemChanged(pos, payload);}

 根据传进来的标识,只改变,需要修改的VIew。前提是要修改的View的大小不会变化,只改变状态,因为Item中其他的View不刷新。如果大小改变的话,可能会导致布局跟着变,这时就得需要item去重新计算来绘制了。

 @Overridepublic void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position,             @NonNull List<Object> payloads) {Log.e("nyz", "onBindViewHolder pos " + position);if (!payloads.isEmpty() && payloads.get(0).equals("name")) {Log.e("nyz", "update name");Person person = list.get(position);((MyViewHolder) holder).nameTv.setText(person.name);} else {Log.e("nyz", "update item");super.onBindViewHolder(holder, position, payloads);}}

看日志:

确实只修改了需要修改的View,并没有导致整个View进行重新绘制。

代码下载:https://download.csdn.net/download/niuyongzhi/88382724

http://www.yidumall.com/news/79448.html

相关文章:

  • 如何快速建立一个网站百度竞价推广联系方式
  • 网站建设加后台网站关键词推广
  • 做网站的销售工作好吗seo优化网页
  • java做网站教程视频河南制作网站
  • 哪些网站可以做批发衣服企业推广策划书
  • 广德做网站深圳的seo网站排名优化
  • 网站还没有做可以备案吧邵阳seo优化
  • 常熟企业网站建设推广码怎么填
  • 帮别人做设计图的网站关键词林俊杰无损下载
  • 学编程多大年龄开始学为最佳苏州网站建设优化
  • 北京市建设局网站纯手工seo公司
  • wordpress最新版核心官网seo怎么做
  • 网站改版影响seo吗seo关键词平台
  • 怎么架设网站上海seo培训中心
  • 淘宝客做自已的网站今日小说排行榜
  • 太原深圳建设工程信息网站如何做网站设计
  • 成都小程序定制开发公司泰州seo
  • 台州做网站哪家公司好成都seo服务
  • 做网站优化的深圳推广网络
  • 深圳专业网站建设制作新网站如何让百度收录
  • 湖北响应式网站建设微信引流推广
  • 网站建设 推神网络中国百强县市榜单
  • 柳市网站建设公司网站关键词排名优化客服
  • 网站关键词seo优化怎么做市场营销案例100例
  • 当富广州网站建设百度搜索指数排名
  • 沈阳网站建设索王道下拉抖音seo推广外包公司好做吗
  • 哪些网站做商标注册合肥网站关键词优化公司
  • 河南新闻最新消息10条seo新闻
  • 做网站怎么字体全部变粗了国内专业seo公司
  • 哪家公司做网站不错竞价网站