使用SharedPrefernces对RecyclerView中的整数求和

时间:2019-07-03 16:03:00

标签: java android sum sharedpreferences

我正在尝试创建一个可以汇总时间的应用程序。 我的情况: 我有一个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

检索

但是他不起作用。

2 个答案:

答案 0 :(得分:2)

您是否有理由使用两个不同的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文件,但是我认为这不是您要尝试的方法。您还使用了两个不同的键,这肯定也是问题的一部分。我在上面的代码中更改了它们,以便它们匹配,并且您两次都引用相同的键。

答案 1 :(得分:2)

首先,您使用2个不同的键:TimeRetrieveTime。所以,你不能求和。 其次,为什么要使用2 SharedPreferences对象?只需要一个。 第三,您无需在此处使用SharedPreferences。您只需要对变量中想要的值求和,然后将其传递给具有额外捆绑包的另一个Activity。