使用sharedpreferences设置字符串数组

时间:2014-02-18 20:30:46

标签: android arrays sharedpreferences

我正在尝试制作一个“记忆”来在StringArray中保存三个日期+小时。 我将用代码更好地解释。在我的主要活动中,我称之为:

conf.setDateArray(completeDate, conf.getPosition());

这两个参数是(一个String,一个带有数组[0或1或2]位置的int)。 我的问题来自Configuration类:

private String[] strDateArray = new String[3];
private int position = 0;

public void setDateArray(String str, int position) {
    SharedPreferences.Editor editor = getSettings().edit();
    // The problem is this code, I dont know how to write in the array in
    // the position
    this.strDateArray(position) = str(position);
    editor.putString(KEY_DATEARRAY, str);
    //
    editor.commit();
    if (position == 2) {
        this.position = 0;
    } else {
        this.position++;
    }
}

感谢您的帮助!

编辑:我想做的一个例子 我想在StringArray [0]中引入类似“20-02-2014 14:14”的日期,让用户在再次启动APP时获得此值。我的目的是获得最后三个可能的值,当所有数组都被填充时,position = 0将被覆盖。

1 个答案:

答案 0 :(得分:0)

private static final String[] KEYS = { "0", "1", "2" };
private static final String POSITION = "LAST_POSITION";

public void setDateArray(String str) { // no need to pass the position in
    SharedPreferences prefs = getSettings(); // what's getSettings ?
    int pos = prefs.getInt(POSITION, 0); // get the last position - if you kept 
    // it in a field on app restart you will loose it
    final Editor editor = prefs.edit();
    editor.putString(KEYS[pos], str);
    pos = (pos + 1) % 3; // if pos + 1  == 3 with the %3 you get 0
    editor.putInt(POSITION, pos);
    editor.commit();
}

虽然我确信有一种更简单的方法可以做到这一点