Android开发之RecyclerView之刷新数据notifyDataSetChanged失败的问题
今天做购物车,特别奇怪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失败的问题相关推荐
- Android开发之RecyclerView动态添加item长按删除item源码
我们先看下效果图: 效果还是很不错的. 实现思路: 设置recyclerview为GridLayoutManager布局,单行个数为4个 GridLayoutManager linearLayoutM ...
- Android开发之RecyclerView的交互动画(实现拖拽和删除)
做RecyclerView做相关的动画效果的时候,用的最多的是v7包下的ItemTouchHelper类,这个类很强大,如有兴趣的童鞋可以自行翻看源码,接下来我带领大家实现RecyclerView相关 ...
- Android开发之Service与Activity数据交互(源代码分享)
Service想要与Activity进行数据交互,首先Activity先得绑定Service.bound service是service 的实现,它允许其他应用程序绑定到它并与之交互.要提供bound ...
- android gridview 间隔线,Android开发之RecyclerView的间隔线处理
RecyclerView没有默认的分割线,需要自己绘制,接下来我会为大家绘制三种线:水平线.竖直线.和网格线. 废话少说,马上开车!!! ------------------------------- ...
- Android开发之RecyclerView滑动到底部的监听方法
Kotlin版本 recyclerview.addOnScrollListener(object: RecyclerView.OnScrollListener() {override fun onSc ...
- Android开发之RecyclerView嵌套ListView自动计算高度的方法
老套路看图:下面是我在我爱我家在职时候做的一个小需求记录下 最外层是个RecylerView子布局里面的房屋描述信息是个listview根据后台返回字段动态显示的高度. 解决思路:可以计算每个list ...
- Android开发之对ListView的数据进行排序
这里涉及到对ListView的数据进行排序,以及ListView的数据如何清空处理.排序的方法相同,但是里面的数据集合有些区别:一种是利用pojo类取得数据:另一种是利用map来取得数据. 第一种:利 ...
- Android开发之recyclerview布局加载不全的问题
先看图: 我明明写的是填充父布局怎么就只有这么窄呢? 看下我加载布局的方法: View fundView = View.inflate(parent.getContext(), R.layout.it ...
- Android开发之无bug滑动删除源码(非第三方库)
Android开发之无bug滑动删除源码(非第三方库源码请在最后面自行下载) 1.我们先来看下效果图:上边是抽取出来的demo,下边是公司用到的项目 2.我们来看下如何调用(我们这里以listView ...
最新文章
- 数据导入HBase最常用的三种方式及实践分析
- use stacks能够把很多相似的文件叠加在macos的桌面上
- kmean python实现
- 平切分,分库,分表,主从,集群 数据库水平切分的实现原理解析
- 美丽的窗花java分形_美丽的窗花教案
- java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile
- iOS10 资料汇总:值得回看的 10 篇 iOS 热文
- recorder_将Java Flight Recorder与OpenJDK 11一起使用
- 再见,中关村“金三角”!
- ListView动态添加控件
- JQuery动态增加删除元素
- 一键将RHEL的YUM源更换为CentOS源
- 工作流调度器azkaban 安装
- python爬虫入门
- 不要重启!诺顿居然将系统文件当病毒
- tf.matmul()和tf.multipy()的区别
- npm publish 报错 403
- 海思vo 分屏显示总结
- [java/初学者] 猜测随机数字的大小
- dell服务器 指示灯_Dell PowerEdge服务器或PowerVault存储诊断LED指示灯(QuadPack)故障排除...
热门文章
- verilog出租车计价器
- 《c语言从入门到精通》看书笔记——第4章 运算符与表达式
- 2021龙岩一中高考成绩查询,喜报!2020年高考成绩已经揭晓,龙岩这七所一中,看看有没有你的母校!...
- go channel 缓冲区最大限制_一起攻克面试难关:Go 面试每天一篇(第 40 天)
- [CocoaPods]常见问题
- 使用HTML5技术控制电脑或手机上的摄像头
- vue 自定义属性判断点击每个item 显示隐藏
- [error]Cannot create __weak reference in file using manual refer XCode7.3
- Asp.net 2.0 动态加载其他子目录用户控件问题
- Qt-QMessageBox用法详解