Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Kripton: SharedPreferences

Come utilizzare la libreria Kripton per gestire la persistenza delle preferenze degli utenti in un'applicazione Java per il sistema operativo Android.
Come utilizzare la libreria Kripton per gestire la persistenza delle preferenze degli utenti in un'applicazione Java per il sistema operativo Android.
Link copiato negli appunti

La gestione delle shared preference in Android consente nativamente di gestire agevolmente le preferenze utente all'interno di un'applicazione. Kripton viene a supporto di
questo meccanismo di persistenza dell'informazione fornendo una maggiore robustezza del codice necessario a recuperare e modificare tali preferenze per via programmatica.
Prendiamo le shared preference del nostro progetto d'esempio.

Figura 1. Shared preferences d'esempio.
Shared preferences d'esempio

Il codice xml che definisce tale interfaccia è il seguente:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <SwitchPreference
        android:defaultValue="true"
        android:key="example_switch"
        android:summary="@string/pref_description_social_recommendations"
        android:title="@string/pref_title_social_recommendations" />
    <EditTextPreference
        android:capitalize="words"
        android:defaultValue="@string/pref_default_display_name"
        android:inputType="textCapWords"
        android:key="example_text"
        android:maxLines="1"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:title="@string/pref_title_display_name" />
    <ListPreference
        android:defaultValue="-1"
        android:entries="@array/pref_example_list_titles"
        android:entryValues="@array/pref_example_list_values"
        android:key="example_list"
        android:negativeButtonText="@null"
        android:positiveButtonText="@null"
        android:title="@string/pref_title_add_friends_to_messages" />
</PreferenceScreen>

Per accedere a queste informazioni mediante la classe SharedPreference presente nell'SDK di Android bisognerebbe scrivere un codice simile a questo:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String exampleName = prefs.getString("example_text", "No name defined");
boolean exampleSwitch = prefs.prefs.getBoolean("example_switch", false);

Con Kripton, queste impostazioni potrebbero venire rappresentate da una classe tipo:

@BindSharedPreferences
public class EsempioSharedPreferences {
    public boolean exampleSwitch;
    public String exampleText;
    public String exampleList;
}

Grazie all'annotazione @BindSharedPreferences Kripton genererà per noi il codice necessario ad accedere più agevolmente allo SharedPreference
dell'applicazione, consentendo trasformare il codice visto prima in:

BindEsempioSharedPreferences sp=BindEsempioSharedPreferences.instance().refresh();
String exampleText = sp.exampleText();
boolean exampleSwitch = sp.exampleSwitch();

Il vantaggio rispetto al codice visto in precedenza è che l'accesso alle preferenze non avviene più mediante mappa, ma mediante un accesso tipizzato. Invece di leggere un attributo
per volta è possibile leggere interamente dallo shared preferences:

EsempioSharedPreferences bean=BindEsempioSharedPreferences.instance().read();
String exampleText = bean.exampleText;
boolean exampleSwitch = bean.exampleSwitch;

Data una classe ExampleSharedPreference, Kripton genererà il codice necessario in BindExampleSharedPreference, ovvero una classe che ha il nome della
classe originaria con il prefisso Bind. Anche in questo caso Kripton supporta diversi tipi di dati: stringhe, interi, collezioni, byte ed oggetti complessi. Tutto
quello che non direttamente
salvabile viene convertito nel sua rappresentazione JSON e poi salvato come stringa.

Ovviamente questo tipo di attributi non può essere utilizzato con i componenti standard per
la gestione delle preference,
ma può risultare utile nel caso in cui si necessiti o si voglia definire dei propri componenti per esse. Per poter utilizzare l'annotazione @BindSharedPreferences
è necessario che il nome della classe termini con SharedPreferences.

Kripton, come abbiamo detto, è un progetto open source ospitato su GitHub.com. Esso è disponibile al seguente link.
Nel progetto
d'esempio associato a questa sezione è presente del codice che illustra l'uso di Kripton per
persistenza mediante SQLite e le SharedPreferences.

Ti consigliamo anche