Skip to content

Instantly share code, notes, and snippets.

@MikeFot
Last active March 22, 2018 09:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MikeFot/65d550ab20eae32f15a0f95f7576bc79 to your computer and use it in GitHub Desktop.
Save MikeFot/65d550ab20eae32f15a0f95f7576bc79 to your computer and use it in GitHub Desktop.
LiveSharedPreference (Android) for use with ViewModel
import android.arch.lifecycle.MutableLiveData;
import android.content.SharedPreferences;
public class LiveSharedPreference<T> extends MutableLiveData<T> {
private final SharedPreferences mSharedPreferences;
private final SharedPreferences.OnSharedPreferenceChangeListener mListener;
public LiveSharedPreference(final String preferenceKey,
final SharedPreferences sharedPreferences) {
mSharedPreferences = sharedPreferences;
mListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences, final String key) {
if (key.equals(preferenceKey)) {
final T value = (T) sharedPreferences.getAll().get(key);
setValue(value);
}
}
};
}
@Override
protected void onActive() {
super.onActive();
mSharedPreferences.registerOnSharedPreferenceChangeListener(mListener);
}
@Override
protected void onInactive() {
super.onInactive();
mSharedPreferences.unregisterOnSharedPreferenceChangeListener(mListener);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment