list插入对象将之前的数据覆盖,究极奔溃

        最近在写安卓期末大作业,其中有一记录需要recyclerview的数据集,里边放的是通过查询sqlite查询到的满足条件的运动对象实体类的对象,但是发现无论如何插入,新的对象总是会将之前的信息覆盖,输出的是数据一直是最新的运动记录(因为结束运动完成插入操作之后表后,它是最后对应表中的最后一条数据,cursor资源一路next到最后就是他,然后他就非常不客气的将之前的全部“覆盖”掉了)

(忽略有点花哨的界面)

到处查询资料,还对对应位置利用索引插入,在加入集合前后,查看其中的内容

结果让人究极崩溃,一度怀疑是AS在和自己开玩笑,但是秉持着程序不会错,错的一定是我的中心思想,我去看了list的源码,发现也没啥问题(主要是没看太懂),于是乎上网查了相关的资料,发现是了问题所在。

list在添加数据时的依据是相关索引,而我之前将对象声明成了全局变量,尽管在查询中cursor赋予了不同的值,但是因为是一个声明,其地址空间以及索引相同,所以在插入的时候,list会认为:尽管你是不同次序的到来,携带的数据不同,但是你就是一个人,换了一件衣服而已。于是乎他就将之前的对象用这最新到来的对象进行替换,毕竟都是一个索引,映射的同一个地址空间嘛。

所以在输出的时候,就得到了一摸一样的最新的数据,之前查询到的数据就被“覆盖”了。

知道了这个,问题就好办了,我们可以需要在进行list添加的时候,给予不同的引用,让他知道,这绝对不是同一个人。

我的解决办法是在赋值之前,new一个新的对象出来接受我们的数据,然后把他放进去,保证引用不同!!

 

 最后也终于是得到了期待的结果,他们终于不一样了。

 综上,用list添加的时候,注意引用的区分,不然list蛮脸盲的!!!

这是俺的第一篇博客,问题比较简单,也算是学习记录,以后多多加油。

奋斗趁年轻,吃苦趁现在!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值