java - 使用 SharedPrefernces 对 RecyclerView 中的整数求和
问题描述
我正在尝试创建一个汇总时间的应用程序。我的情况:我有一个包含很多元素的 RecyclerView,每个元素都有不同的time
属性。
现在,当单击一个元素时,我希望将所有这些属性相加,并将最终结果显示在另一个活动中。所以我想要做的是使用 SharedPrefernces 来实现这一点,如下所示:
private void getTime(int time) {
SharedPreferences sharedPreferences = mContext.getSharedPreferences("sharedPrefs", MODE_PRIVATE);
int time0 = sharedPreferences.getInt("TimeRetrieve", 0);
int sum = time0 + time;
SharedPreferences sharedPreferences2 = mContext.getSharedPreferences("sharedPrefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences2.edit();
editor.putInt("Time", sum);
editor.apply();
TimeRetrieve
获取在 TextView 中显示的总时间,所以如果这是第一次,它当然默认为 0。之后,它应该将检索到的 int 与刚刚单击的 Item 的 int 相加,然后保存在另一个 SharedPref:Time
中。
Time
被发送到 TextView,在那里它被检索TimeRetrieve
但是他的不行。。
解决方案
您是否有理由使用两种不同SharedPreferences
的方式来获取和放置数据?考虑使用这样的东西:
private void GetTime(int time) {
SharedPreferences sharedPreferences = mContext.getDefaultSharedPreferences("sharedPrefs", MODE_PRIVATE);
int time0 = sharedPreferences.getInt("TimeRetrieve", 0);
int sum = time0 + time;
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("TimeRetrieve", sum);
editor.apply();
注意对 的调用getDefaultSharedPreferences
。这将获得默认的com.companyname.package.yourapplication
SharedPreferences 文件,如果您想从中设置和检索数据,您应该只使用该文件。您会创建多个 SharedPreferences 文件还有其他原因,但我认为这不是您想要做的。您还使用了两个不同的密钥,这也绝对是问题的一部分。我在上面的代码中更改了它们,以便它们匹配并且您两次都引用相同的键。
推荐阅读
- java - Mulesoft SFTP 连接器
+ JSch 无法正常工作 - python - 如果条目数小于一定数量,则每隔 15 秒删除所有条目
- java - 使用注释的 LocalDate[] 的杰克逊数据绑定
- openlayers-5 - 在 Openalyers 5 中获取所有图层的范围
- python - 使用发布请求从下一页获取结果时遇到问题
- sql-server - 子查询返回超过 1 个值。当子查询跟随 !=、<、<=、>、>= 时,这是不允许的
- python - 在 Python 中使用全局变量和队列类进行线程数据通信有什么区别?
- docker - Kubernetes 执行程序 pod 创建失败,出现间歇性 404 和“未经授权”错误
- c++ - 是否有特殊原因将小于运算符用作 max pq 的默认比较?
- php - 用于从字段中删除所有标签的 MY SQL 查询