diff --git a/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/DPreference.java b/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/DPreference.java index b5916b7f..fdc7eafe 100644 --- a/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/DPreference.java +++ b/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/DPreference.java @@ -2,7 +2,9 @@ package me.dozen.dpreference; import android.content.Context; +import android.text.TextUtils; +import java.util.LinkedHashSet; import java.util.Set; /** @@ -45,10 +47,6 @@ public class DPreference { PrefAccessor.setInt(mContext, mName, key, value); } - public void setPrefStringSet(final String key, final Set value) { - PrefAccessor.setStringSet(mContext, mName, key, value); - } - public int getPrefInt(final String key, final int defaultValue) { return PrefAccessor.getInt(mContext, mName, key, defaultValue); } @@ -61,10 +59,26 @@ public class DPreference { return PrefAccessor.getLong(mContext, mName, key, defaultValue); } + public void setPrefStringSet(final String key, final Set value) { + PrefAccessor.setStringSet(mContext, mName, key, value); + } + public Set getPrefStringSet(final String key, final Set defaultValue) { return PrefAccessor.getStringSet(mContext, mName, key, defaultValue); } + public void setPrefStringOrderedSet(final String key, final LinkedHashSet value) { + PrefAccessor.setString(mContext, mName, key, StringSetConverter.encode(value)); + } + + public LinkedHashSet getPrefStringOrderedSet(final String key, final LinkedHashSet defaultValue) { + String value = PrefAccessor.getString(mContext, mName, key, ""); + if (TextUtils.isEmpty(value)) { + return defaultValue; + } + return StringSetConverter.decode(value); + } + public void removePreference(final String key) { PrefAccessor.remove(mContext, mName, key); } diff --git a/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/StringSetConverter.java b/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/StringSetConverter.java index ae29ad56..8350d46b 100644 --- a/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/StringSetConverter.java +++ b/V2rayNG/dpreference/src/main/java/me/dozen/dpreference/StringSetConverter.java @@ -4,6 +4,7 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; +import java.util.LinkedHashSet; import java.util.Set; public class StringSetConverter { @@ -13,8 +14,8 @@ public class StringSetConverter { return gson.toJson(src); } - public static Set decode(String json) { - Type setType = new TypeToken>() { + public static LinkedHashSet decode(String json) { + Type setType = new TypeToken>() { }.getType(); return gson.fromJson(json, setType); }