LoginSignup
21
22

More than 5 years have passed since last update.

プリファレンスに配列を保存

Last updated at Posted at 2014-05-31

プリファレンスに配列保存したいですね!

※ 2015/4/6追記 以下リンクにプレファレンスにオブジェクトを保存する方法があったので書きました。これで配列でもなんでも保存できます。

こんなのがいいんじゃないかと思って書いてみました。
参考になれば幸いです。

保存する際は、配列を文字列に変換・保存
取得する際は、文字列を配列に変換

// プレファレンスに保存
String[] arrayItem1 = {"aaa","bbb","ccc","ddd","eee","fff"};            
saveArray(arrayItem1,"StringItem");

// プリファレンスから取得
String[] arrayItem2 = getArray("StringItem");

// プリファレンス保存
// aaa,bbb,ccc... の文字列で保存
private void saveArray(String[] array,String PrefKey){
    StringBuffer buffer = new StringBuffer();
    String stringItem = null;
    for(String item : array){ 
        buffer.append(item+",");
    };
    if(buffer != null){
        String buf = buffer.toString();
        stringItem = buf.substring(0, buf.length() - 1);

        SharedPreferences prefs1 = getSharedPreferences("Array", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = prefs1.edit();
        editor.putString(PrefKey, stringItem).commit();
    }
}

// プリファレンス取得
// aaa,bbb,ccc...としたものをsplitして返す
private String[] getArray(String PrefKey){
    SharedPreferences prefs2 = getSharedPreferences("Array", Context.MODE_PRIVATE);
    String stringItem = prefs2.getString(PrefKey,"");
    if(stringItem != null && stringItem.length() != 0){
        return stringItem.split(",");           
    }else{
        return null;
    }
}

他にいい方法があったら教えてくださいね!

21
22
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
22