今天做购物车,特别奇怪notifyDataSetChanged无论如何不能刷新数据。

代码如下:

 marketCartTvEditShop.setOnClickListener(v -> {//刷新数据的标识,知否可以编辑购物车isEditCart = !isEditCart;//编辑购物车mCardAdapter.notifyDataSetChanged();Toast.makeText(getActivity(), "点击了编辑", Toast.LENGTH_SHORT).show();if (isEditCart) {marketCartTvEditShop.setText("编辑");} else {marketCartTvEditShop.setText("完成");}});

再看下adapter

LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);marketCartRvData.setLayoutManager(layoutManager);//设置分隔线marketCartRvData.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayout.VERTICAL));marketCartRvData.setItemAnimator(new DefaultItemAnimator());mCardAdapter = new CardAdapter(cartShowData,isEditCart);marketCartRvData.setAdapter(mCardAdapter);initListener();

这么看都觉得没有问题

可是notifyDataSetChanged无论如何都不刷新数据,怎么回事呢?

最后百度下才知道原来在notifyDataSetChanged方法中如果传入adapter中的数据没有改变的话notifyDataSetChanged是不会起作用的,也就是说传入adapter里面的数据只有改变notifyDataSetChanged才可以刷新成功。那我们怎么办呢?

很简单在数控居中设置一个标识,例如我设置一个Boolean如下:

 /*** 是否可以编辑购物车的标识*/private boolean editCart;public boolean isEditCart() {return editCart;}public void setEditCart(boolean editCart) {this.editCart = editCart;}

还是看下图吧,代码看的不是很明显。

也就是说我要编辑购物车,我就讲editCart设置为true

也就是下面的代码

 marketCartTvEditShop.setOnClickListener(v -> {isEditCart = !isEditCart;cartShowData.setEditCart(isEditCart);//编辑购物车mCardAdapter.notifyDataSetChanged();Toast.makeText(getActivity(), "点击了编辑", Toast.LENGTH_SHORT).show();if (isEditCart) {marketCartTvEditShop.setText("编辑");} else {marketCartTvEditShop.setText("完成");}});

还是看图吧,更清晰

这样的话传入adapter里面的数据就改变了,notifyDataSetChanged也就可以起作用刷新数据了

来看下成功后的动图:

Android开发之RecyclerView之刷新数据notifyDataSetChanged失败的问题相关推荐

  1. Android开发之RecyclerView动态添加item长按删除item源码

    我们先看下效果图: 效果还是很不错的. 实现思路: 设置recyclerview为GridLayoutManager布局,单行个数为4个 GridLayoutManager linearLayoutM ...

  2. Android开发之RecyclerView的交互动画(实现拖拽和删除)

    做RecyclerView做相关的动画效果的时候,用的最多的是v7包下的ItemTouchHelper类,这个类很强大,如有兴趣的童鞋可以自行翻看源码,接下来我带领大家实现RecyclerView相关 ...

  3. Android开发之Service与Activity数据交互(源代码分享)

    Service想要与Activity进行数据交互,首先Activity先得绑定Service.bound service是service 的实现,它允许其他应用程序绑定到它并与之交互.要提供bound ...

  4. android gridview 间隔线,Android开发之RecyclerView的间隔线处理

    RecyclerView没有默认的分割线,需要自己绘制,接下来我会为大家绘制三种线:水平线.竖直线.和网格线. 废话少说,马上开车!!! ------------------------------- ...

  5. Android开发之RecyclerView滑动到底部的监听方法

    Kotlin版本 recyclerview.addOnScrollListener(object: RecyclerView.OnScrollListener() {override fun onSc ...

  6. Android开发之RecyclerView嵌套ListView自动计算高度的方法

    老套路看图:下面是我在我爱我家在职时候做的一个小需求记录下 最外层是个RecylerView子布局里面的房屋描述信息是个listview根据后台返回字段动态显示的高度. 解决思路:可以计算每个list ...

  7. Android开发之对ListView的数据进行排序

    这里涉及到对ListView的数据进行排序,以及ListView的数据如何清空处理.排序的方法相同,但是里面的数据集合有些区别:一种是利用pojo类取得数据:另一种是利用map来取得数据. 第一种:利 ...

  8. Android开发之recyclerview布局加载不全的问题

    先看图: 我明明写的是填充父布局怎么就只有这么窄呢? 看下我加载布局的方法: View fundView = View.inflate(parent.getContext(), R.layout.it ...

  9. Android开发之无bug滑动删除源码(非第三方库)

    Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...

最新文章

  1. 数据导入HBase最常用的三种方式及实践分析
  2. use stacks能够把很多相似的文件叠加在macos的桌面上
  3. kmean python实现
  4. 平切分,分库,分表,主从,集群 数据库水平切分的实现原理解析
  5. 美丽的窗花java分形_美丽的窗花教案
  6. java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile
  7. iOS10 资料汇总:值得回看的 10 篇 iOS 热文
  8. recorder_将Java Flight Recorder与OpenJDK 11一起使用
  9. 再见,中关村“金三角”!
  10. ListView动态添加控件
  11. JQuery动态增加删除元素
  12. 一键将RHEL的YUM源更换为CentOS源
  13. 工作流调度器azkaban 安装
  14. python爬虫入门
  15. 不要重启!诺顿居然将系统文件当病毒
  16. tf.matmul()和tf.multipy()的区别
  17. npm publish 报错 403
  18. 海思vo 分屏显示总结
  19. [java/初学者] 猜测随机数字的大小
  20. dell服务器 指示灯_Dell PowerEdge服务器或PowerVault存储诊断LED指示灯(QuadPack)故障排除...

热门文章

  1. verilog出租车计价器
  2. 《c语言从入门到精通》看书笔记——第4章 运算符与表达式
  3. 2021龙岩一中高考成绩查询,喜报!2020年高考成绩已经揭晓,龙岩这七所一中,看看有没有你的母校!...
  4. go channel 缓冲区最大限制_一起攻克面试难关:Go 面试每天一篇(第 40 天)
  5. [CocoaPods]常见问题
  6. 使用HTML5技术控制电脑或手机上的摄像头
  7. vue 自定义属性判断点击每个item 显示隐藏
  8. [error]Cannot create __weak reference in file using manual refer XCode7.3
  9. Asp.net 2.0 动态加载其他子目录用户控件问题
  10. Qt-QMessageBox用法详解