我有一个应该用作日记的应用程序,用户可以在其中输入一些文本并将其存储以供将来阅读。每个条目一个接一个地存储在一个 tableLayout 中。
我在一个数组中有这些文本,我希望 tableLayout 是永久的,我的意思是即使调用了销毁,所以我需要使用共享首选项。
例如,如果用户在重启后打开我的应用程序,我如何恢复所有行?
谢谢
我有一个应该用作日记的应用程序,用户可以在其中输入一些文本并将其存储以供将来阅读。每个条目一个接一个地存储在一个 tableLayout 中。
我在一个数组中有这些文本,我希望 tableLayout 是永久的,我的意思是即使调用了销毁,所以我需要使用共享首选项。
例如,如果用户在重启后打开我的应用程序,我如何恢复所有行?
谢谢
如果您使用 API 级别 11 或更高级别,则可以使用getStringSet()
和putStringSet()
函数。这是一个例子:
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
String yourArray = new String [] {"Hello", "World", "How", "Are", "You"};
editor.putStringSet(new HashSet(Arrays.asList(yourArray)), "test");
把它拿回来:
Set<String> data = prefs.getStringSet("test", null);
如果您使用较低级别的 API:
//context - a context to access sharedpreferences
//data[] - the array you want to write
//prefix - a prefix String, helping to get the String array back.
public static void writeList(Context context, String [] data, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
int size = data.length;
// write the current list
for(int i=0; i<size; i++)
editor.putString(prefix+"_"+i, data[i]);
editor.putInt(prefix+"_size", size);
editor.commit();
}
public static String[] readList (Context context, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
int size = prefs.getInt(prefix+"_size", 0);
String [] data = new String[size];
for(int i=0; i<size; i++)
data[i] = prefs.getString(prefix+"_"+i, null);
return data;
}
public static int removeList (Context context, String prefix)
{
SharedPreferences prefs = context.getSharedPreferences("YourApp", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
int size = prefs.getInt(prefix+"_size", 0);
for(int i=0; i<size; i++)
editor.remove(prefix+"_"+i);
editor.commit();
return size;
}
(这应该在您的活动中)
//write it:
String yourArray = new String [] {"Hello", "World", "How", "Are", "You"};
writeList(this, yourArray, "test");
//get it back:
String yourArray = readList(this, "test");
//delete it:
removeList(this, "test");