2016-04-13 6 views
1

Я новичок в разработке Android, и я пытаюсь изучить хранение и извлечение данных, хранящихся во внутренней памяти. Для этого я включил линейную диаграмму, которая отображает координаты x и y. Я вручную ввел значения координат, для целей тестирования, как только значения будут построены, я хочу сохранить эти значения в файле. Позже, когда я снова открою приложение, если есть какие-то старые значения, эти значения должны быть построены сначала, а затем должны быть нанесены значения, введенные вручную.Сохранение значений float во внутреннем хранилище android

Я выполнил то же самое, используя следующий код:

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; 
    } 

хранить й и у значения в 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); 
} 

Далее я хочу сохранить построенные значения во внутреннем хранилище. После открытия приложения сначала должны быть построены старые значения, а затем должны быть построены новые значения. Итак, я хочу знать, какой метод лучше всего подходит для хранения и извлечения данных с телефона.

Любые виды помощи приветствуются.

+0

Храните значения x, y в файле со временем данных и в то время как открытые файлы сравнения приложений и даты с плавающей запятой упорядочиваются :) –

ответ

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

+0

Предоставленная информация действительно полезно. Но я хочу знать, будут ли эти oldValues ​​стерты после закрытия приложения. – ADI

+0

@ADI нет, все в SharedPreferences остается после закрытия приложения – Pooya

+0

Я знаю, что это очень тривиальный вопрос, но когда я включаю компиляцию com.google.code.gson: gson: 2.3 '"в" build.gardle, я получаю следующую ошибку : Ошибка: (8, 0) Метод Gradle DSL не найден: 'compile()' Возможные причины: в проекте «hellocharts-android-master» может использоваться версия Gradle, которая не содержит метода. Файл сборки может отсутствовать плагин Gradle. Я не знаю, что пошло не так – ADI

0

В вашем случае вы можете использовать SharedPreferences. Это хранилище ключей Key-Value. и вы не можете поместить значение float в SharedPreferrence, поэтому используйте Double или String для хранения значений

+0

это массив значений, которые не являются одним значением – Pooya

+0

Вы можете использовать метод PutStringSet() для хранения массива –

+0

да, но сначала он добавлен в API 11, а затем вам необходимо преобразовать ваш тип данных t o HashSet или что-то подобное – Pooya

Смежные вопросы