我是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);
}
接下来,我希望将绘制的值存储在内部存储中。打开应用程序后,必须首先绘制存储的旧值,然后绘制新值。所以,我想知道哪种方法最适合存储和检索手机中的数据。
感谢任何形式的帮助。
答案 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类型来存储值