2

過去 5 回の呼び出し日の配列を作成する必要があります。

配列に日付を保存する必要があることはわかっていますが、この最後の呼び出し日を最初のレコードに保つために他のレコードを並べ替える方法がわかりません。常に 5 つのレコードのみを維持する

目標は、最後の呼び出し文字列を保存して配列に追加することです。その後、並べ替えて 5 つのレコードのみを維持します。その後、FlexJson を使用して文字列を作成し、sharedpreferences を保存します。誰でもこの完全なプロセスを持っていますか?

ここで私がやっていることはどこでもエラーを投げています:

保存

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy", Locale.getDefault());
Calendar calendar = Calendar.getInstance();
String currentDateTimeString = df.format(calendar.getTime());

List<String> textList = new ArrayList<>();
JSONSerializer ser = new JSONSerializer();
textList.add(currentDateTimeString);

String jsonText = ser.deepSerialize(textList);

editor.putString("lastCall", jsonText);
editor.commit();

読んだ:

String lastCall = callLogPreferences.getString("lastCall", null);
JSONDeserializer<List<String>> der = new JSONDeserializer<>();
List<String> textList = der.deserialize(lastCall);

FlexJson を使用しています: GSON と InstanceCreator の問題

文字列から配列リストに変換されていません

4

2 に答える 2

4

最初にアドバイスをさせてください。質問が 3 つある場合は、すべての質問を 1 つにまとめるのではなく、3 つのトピックを作成してください。質問のタイトルに基づいて: Android array to sharedpreferencesこの問題だけに答えます。

あなたの質問から、List<String>myListを に保存したいと考えていますSharedPreferences。そのためには、簡単なので使用することをお勧めしますGson。主なアイデアは、あなたListをにシリアル化Stringjson、それを保存することですString

プリミティブ型を使用しているため、 TypeTokenを指定する必要はありません。

public static final MY_LIST = "my_list";

List<String> myList = new ArrayList<String>();
SharedPreferences.Editor editor = prefs.edit();
editor.putString(MY_LIST, new Gson().toJson(myList));
editor.commit();

そして、保管されています。リストを取得するには、逆の操作を行います。

myList = new Gson().fromJson(prefs.getString(MY_LIST, null), List<String>);

以上です!
それが役に立ったことを願っています。

ps:他の/ /etc..SharedPreferencesでアクセスできる値を保存するため、またはアプリの再起動間で情報を保持するために使用されます。目的を達成するためにこれは必要ありません: 順序付けされた 5 つの文字列を含むリストを作成します。ClassesActivities

EDIT:このライブラリは、シリアライゼーションで時間を節約できます;)

于 2015-06-04T22:17:55.083 に答える