数组共享首选项重建TableLayout OnDestroy

时间:2012-09-01 15:59:17

标签: android arrays android-tablelayout ondestroy

我有一个应用程序应该作为日记工作,用户可以在其中输入一些文本并将其存储到将来的读取中。每个条目都存储在一个tableLayout中,另一个存储在另一个中。

我在数组中有这些文本,我希望tableLayout是永久的,我的意思是即使在destroy上调用,所以我需要使用共享首选项。

如果用户在重新启动后打开我的应用程序,我怎么能恢复所有行?例如?

谢谢

1 个答案:

答案 0 :(得分:2)

如果您使用的是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");