将浮点值存储在内部存储android

时间:2016-04-13 06:24:14

标签: java android android-studio

我是Android开发的新手,我试图学习存储和检索存储在内部存储器中的数据。为此我已经包含了一个绘制x和y坐标的折线图。我手动输入了坐标值,为了测试目的,一旦绘制了值,我想将这些值存储在一个文件中。 稍后,当我重新打开应用程序时,如果有任何旧值,则应首先绘制这些值,然后应绘制手动输入的值。

我使用以下代码实现了相同的功能:

public static void generateValues(ArrayList<Float> theList) {
    for (int j = 0; j < theList.size(); j++) {
         if (dummyValues.size() == 0) {
            dummyValues.add(j, theList.get(j));
          } else if (dummyValues.size() == theList.size()) {
                dummyValues.set(j, theList.get(j));
           } else {
                  dummyValues.add(theList.get(j));
                   }
          }   
               arraySize=dummyValues.size();
          return;
    }

在绘制值之前,我将x和y值存储在Arraylist中。之后我将这些值绘制如下:

public void generateData() {
    List<Line> lines = new ArrayList<Line>();
    List<PointValue> values = new ArrayList<PointValue>();
    dummyValues.size();
    for (int i = 0; i < dummyValues.size(); i++) {
         values.add(new PointValue(i, dummyValues.get(i)));         
         Line line = new Line(values);
         lines.add(line);
         }
     data = new LineChartData(lines);    
     if (hasAxes) {
        Axis axisX = new Axis().setHasLines(true);
        axisX.setEnabled(true);
        axisX.setDrawGridLines(true);
        Axis axisY = new Axis().setHasLines(true);
        axisY.setDrawGridLines(true);
        if (hasAxesNames) {
           axisX.setName("Days");
           axisY.setName("Temeperature(Celsius)");
          }
        data.setAxisXBottom(axisX);
        data.setAxisYLeft(axisY);
        } else {
               data.setAxisXBottom(null);
               data.setAxisYLeft(null);
               }
        data.setBaseValue(Float.NEGATIVE_INFINITY);
        chart.setLineChartData(data);
}

接下来,我希望将绘制的值存储在内部存储中。打开应用程序后,必须首先绘制存储的旧值,然后绘制新值。所以,我想知道哪种方法最适合存储和检索手机中的数据。

感谢任何形式的帮助。

2 个答案:

答案 0 :(得分:1)

您可以在JSON中存储SharedPreferences格式的值,然后检索它,但首先需要将Gson库添加到项目中。您需要转到build.gradle文件并在dependencies部分添加以下行:

compile 'com.google.code.gson:gson:2.3'

现在使用Gson将您的数组转换为JSON格式(假设您有一个名为myarraylist的数组):

String json = new Gson().toJson(myarraylist);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putString("old_data",json).commit();

当您想要检索旧数据时,您可以反过来执行以下操作:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String json = prefs.getString("old_data","");
TypeToken<ArrayList<Float>> token = new TypeToken<ArrayList<Float>>() {};
ArrayList<Float> oldValues = new Gson().fromJson(json,token.getType());

此时oldValues包含您的旧ArrayList

答案 1 :(得分:0)

在您的情况下,您可以使用SharedPreferences。它是键值对存储。并且您不能将浮点值放在SharedPreferrence中,因此请使用Double或String类型来存储值