Java 在内部存储器中存储浮点值

Java 在内部存储器中存储浮点值,java,android,android-studio,Java,Android,Android Studio,我是Android开发的新手,我试图学习存储和检索存储在内存中的数据。为此,我提供了一个绘制x和y坐标的折线图。我已经手动输入了坐标值,为了测试目的,一旦绘制了坐标值,我想将这些值存储在一个文件中。 稍后,当我重新打开应用程序时,如果有任何旧值,应首先打印这些值,然后再打印手动输入的值 我使用以下代码实现了相同的功能: public static void generateValues(ArrayList<Float> theList) { for (int j = 0; j

我是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;
    }
publicstaticvoidgeneratevalues(ArrayList-theList){
对于(int j=0;j
在打印值之前,我将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);
}
public void generateData(){
列表行=新的ArrayList();
列表值=新的ArrayList();
dummyValues.size();
对于(int i=0;i
接下来,我想将绘制的值存储在内部存储器中。打开应用程序后,必须先打印存储的旧值,然后再打印新值。所以,我想知道哪种方法最适合从手机中存储和检索数据


非常感谢您提供的任何帮助。

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

compile 'com.google.code.gson:gson:2.3'
现在使用
Gson
将数组转换为
JSON
格式(假设您有一个名为
myarraylist
的数组):

当您想要检索旧数据时,您可以简单地反向执行,如:

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());
SharedReferences prefs=PreferenceManager.GetDefaultSharedReferences(上下文);
String json=prefs.getString(“old_data”,”);
TypeToken token=新的TypeToken(){};
ArrayList oldValues=new Gson().fromJson(json,token.getType());

此时,
oldValues
包含旧的
ArrayList

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

将x、y值与数据时间一起存储在文件中,并在打开应用程序时比较文件和基于浮点的日期顺序:)这是一个值数组,而不是单个值您可以使用PutStringSet()方法来存储数组,但首先它是在API 11中添加的,其次您需要将DatatyType转换为HashSet或类似的东西。您提供的信息非常有用。但是,我想知道这些旧值在关闭应用程序后是否会被删除。@ADI否,在关闭应用程序后SharedReferences中的所有内容都会保留下来。我知道这是一个非常琐碎的问题,但当我在其中包含“compile'com.google.code.gson:gson:2.3”时“build.gardle我收到以下错误:错误:(8,0)找不到Gradle DSL方法:'compile()'可能原因:项目'hellocharts android master'可能使用的Gradle版本不包含该方法。生成文件可能缺少Gradle插件。我不知道发生了什么wrong@ADI你应该将它添加到构建的“依赖项”部分。gradleYes,我确实添加了它。有三个“build.gradle”。首先,在gradle项目中,我得到了上面的错误。其次是两个模块,一个用于应用程序,另一个用于折线图库。当我从主项目中删除它并将其包含在另外两个build.gradle中时,我得到以下错误“error:(20,13)解析失败:com.google.code.gson:gson:2.3在文件中显示在项目结构对话框中显示”让我想想我哪里做错了
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());