
Di Android, ada banyak macam penyimpanan data salah satunya adalah Shared Preferences.
Shared Preferences memiliki karakter penyimpanan key-value sehingga lebih cocok digunakan untuk menyimpan informasi seperti Username, Email, Konfigurasi/Setting aplikasi dan lain sebagainya.
Tutorial berikut menjelaskan penggunaan Shared Preferences khususnya class Shared Preferences Helper yang telah dibuat dibawah ini.
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.preference.PreferenceManager;
import java.util.Map;
import java.util.Set;
/**
* Created by Viral Patel on 01-Feb-16.
*/
public class SharedPreferencesHelper {
private final SharedPreferences settings;
//region Default Values for various types
private int intDefaultVal = 0;
private long longDefaultVal = 0;
private float floatDefaultVal = 0;
private boolean boolDefaultVal = false;
private String stringDefaultVal = "";
private Set<String> stringSetDefaultVal = null;
//endregion
//region Getters and Setters for default Values
public int getIntDefaultVal() {
return intDefaultVal;
}
public void setIntDefaultVal(int intDefaultVal) {
this.intDefaultVal = intDefaultVal;
}
public long getLongDefaultVal() {
return longDefaultVal;
}
public void setLongDefaultVal(long longDefaultVal) {
this.longDefaultVal = longDefaultVal;
}
public float getFloatDefaultVal() {
return floatDefaultVal;
}
public void setFloatDefaultVal(float floatDefaultVal) {
this.floatDefaultVal = floatDefaultVal;
}
public boolean isBoolDefaultVal() {
return boolDefaultVal;
}
public void setBoolDefaultVal(boolean boolDefaultVal) {
this.boolDefaultVal = boolDefaultVal;
}
public String getStringDefaultVal() {
return stringDefaultVal;
}
public void setStringDefaultVal(String stringDefaultVal) {
this.stringDefaultVal = stringDefaultVal;
}
public Set<String> getStringSetDefaultVal() {
return stringSetDefaultVal;
}
public void setStringSetDefaultVal(Set<String> stringSetDefaultVal) {
this.stringSetDefaultVal = stringSetDefaultVal;
}
//endregion
//region Constructors
/**
* Uses the default shared preferences
*/
public SharedPreferencesHelper(Context context) {
settings = PreferenceManager.getDefaultSharedPreferences(context);
}
/**
* creates a new preference file with specified name
* @param context
* @param preferenceFileName
*/
public SharedPreferencesHelper(Context context, String preferenceFileName) {
this(context, preferenceFileName, 0);
}
/**
* creates a new preference file with specified name and mode
* @param context
* @param preferenceFileName
* @param mode
*/
public SharedPreferencesHelper(Context context, String preferenceFileName, int mode) {
settings = context.getSharedPreferences(preferenceFileName, mode);
}
//endregion
//#TODO Builder Pattern here can be helpful in making the use of this much elegant
//region Put Methods
public void putInt(String key, int val) {
settings.edit().putInt(key, val).commit();
}
public void putString(String key, String val) {
settings.edit().putString(key, val).commit();
}
public void putBoolean(String key, boolean val) {
settings.edit().putBoolean(key, val).commit();
}
public void putFloat(String key, float val) {
settings.edit().putFloat(key, val).commit();
}
public void putLong(String key, long val) {
settings.edit().putLong(key, val).commit();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void putStringSet(String key, Set<String> val) {
settings.edit().putStringSet(key, val).commit();
}
//endregion
//region Get Methods
public Map<String, ?> getAll() {
return settings.getAll();
}
public int getInt(String key, int defaultValue) {
return settings.getInt(key, defaultValue);
}
public int getInt(String key) {
return settings.getInt(key, intDefaultVal);
}
public String getString(String key, String defaultValue) {
return settings.getString(key, defaultValue);
}
public String getString(String key) {
return settings.getString(key, stringDefaultVal);
}
public boolean getBoolean(String key, boolean defaultValue) {
return settings.getBoolean(key, defaultValue);
}
public boolean getBoolean(String key) {
return settings.getBoolean(key, boolDefaultVal);
}
public float getFloat(String key, float defaultValue) {
return settings.getFloat(key, defaultValue);
}
public float getFloat(String key) {
return settings.getFloat(key, floatDefaultVal);
}
public long getLong(String key, long defaultValue) {
return settings.getLong(key, defaultValue);
}
public long getLong(String key) {
return settings.getLong(key, longDefaultVal);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public Set<String> getStringSet(String key, Set<String> defaultValue) {
return settings.getStringSet(key, defaultValue);
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public Set<String> getStringSet(String key) {
return settings.getStringSet(key, stringSetDefaultVal);
}
//endregion
//region Listener registering and unregistering methods
public void registerListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
settings.registerOnSharedPreferenceChangeListener(listener);
}
public void unregisterListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
settings.unregisterOnSharedPreferenceChangeListener(listener);
}
//endregion
}
[ads id="ads2"]
Cara Penggunaan
Cara penggunaannya cukup mudah, kita hanya perlu inisiasi variabel baru untuk memanggil fungsi dari SharedPreferencesHelper ini.SharedPreferencesHelper settings = new SharedPreferencesHelper(this, "KEY", Context.MODE_PRIVATE);Selanjutnya kita dapat menambahkan data baru seperti Username, Email, dan variabel lain kedalam Shared Preferences.
settings.putString("USERNAME", "ADMIN");
settings.putString("EMAIL", "admin@nuslab.com");
settings.putBoolean("ISLOGIN", true);
Atau untuk mengambil data-data diatas: String username = settings.getString("USERNAME");
String email = settings.getString("EMAIL");
boolean islogin = settings.getBoolean("ISLOGIN");
Cukup mudah bukan?
Jika melihat data diatas, maka akan terlihat struktur hirarki seperti berikut :
Posting Komentar