Android Sharedpreferences Example

Sebelumnya sudah saya bahas sharedpreferences di android dengan satu value dapat di lihat kembali di sini. Kemarin salah satu temen ada yang nanya, bagaimana kita bisa menggunakannya untuk beberapa nilai yang di simpan, Misalnya untuk meynimpan beberapa nama, caranya adalah dengan menggunakan Set<String> caranya gampang banget, bisa mengedit project sebelumnya atau dengan cara berikut ini :

 

  1. Sama seperti biasa kita buat project baru
  2. buat tampilannya seperti berikut ini ada textview, edit text, button
    Screenshot from 2014-04-27 17:29:40xmlnya adalah : activity_main.xml

    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context="com.example.shareprefmulti.MainActivity$PlaceholderFragment" >
    
    <TextView
     android:id="@+id/textView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/nama" />
    
    <EditText
     android:id="@+id/nameIn"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_alignLeft="@+id/textView1"
     android:layout_below="@+id/textView1"
     android:layout_marginTop="17dp"
     android:ems="10"
     android:inputType="textPersonName" >
    
    <requestFocus />
     </EditText>
    
    <ImageButton
     android:id="@+id/imageButton1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignLeft="@+id/nameIn"
     android:layout_below="@+id/nameIn"
     android:onClick="saving"
     android:src="@drawable/ic_action_user_add" />
    
    <ImageButton
     android:id="@+id/imageButton2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignTop="@+id/imageButton1"
     android:layout_toRightOf="@+id/imageButton1"
     android:onClick="refreshing"
     android:src="@drawable/ic_action_refresh" />
    
    <TextView
     android:id="@+id/textView2"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignRight="@+id/imageButton1"
     android:layout_below="@+id/imageButton1"
     android:layout_marginTop="32dp"
     android:text="" />
    
    </RelativeLayout>
    
    

    penjelasannya sama seperti sebelumnya

  3. kemudian buat package baru com.example.shareprefmulti.UiGet dan buat sebuah class yang namanya uiGet sourcecodenya seperti sebelumnya atau copy dibawah ini :uiGet.java :

    
    package com.example.shareprefmulti.UiGet;
    
    import android.app.Activity;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class uiGet {
    
     public static void displayText(Activity activity, int id, String text) {
     TextView tv = (TextView) activity.findViewById(id);
     tv.setText(text);
     }
    
     public static String getText(Activity activity, int id) {
     EditText et = (EditText) activity.findViewById(id);
     return et.getText().toString();
     }
    }
  4. Kemudian di MainActivity.java sama seperti sebelumnya tetapi ada yang berbeda ketika kita menyimpan data dan menampilkan data perubahanya adalah code berikut ini :Deklarasikan variable-variable berikut
    private static String logtag ="logtag"; 
     private static String NAME = "name";
     String prefValue ;
     Set<String> sets = new HashSet<String>();
     private SharedPreferences saveName;
    

    logtag = untuk debuging di logcatnya
    NAME = variable key untuk sharedpreferences
    prefValue = variable untuk menerima inputan user
    sets = ini adalah variable kunci agar dapat menyimpan value lebih dari 1 referensinya ada di dokumentasi java di http://docs.oracle.com/javase/7/docs/api/java/util/Set.html
    saveNama = variable untuk mengatur keluar masuknya data dari sharedpreferences.

    Kemudian kita membuat 2 method yaitu method saving dan refreshing,  method saving untuk ketika user mengeklik button save dan refreshing dipanggil ketika user mengeklik button reload, yang nantinya akan tampil di text view.

    Method saving :

    public void saving(View v){
     Log.i(logtag, "checked");
     SharedPreferences.Editor editor = saveName.edit();
    
     prefValue = uiGet.getText(this, R.id.nameIn);
     sets.add(prefValue);
     editor.putStringSet(NAME, sets);
     editor.commit();
     uiGet.displayText(this, R.id.textView2, "Saved");
     }
    

    jangan lupa argument View karena ini adalah menantakan bahwa ada sebuah event yang di pass lewat method ini.
    log.i() = method untuk menampilkan informasi di logcat jika method ini dipanggil dia akan muncul di logcat.
    editor = untuk memodifikasi I/O di sharedpreferences
    uiGet.getText() = method yang kita buat pada package sebelumnya yaitu method yang ada di class uiGet
    sets.add() = Adds the specified element to this set if it is not already present (optional operation). ini adalah method untuk menambahkan nilai menjadi sebuah himpunan (set). sets sendiri adalah variable yang kita buat dari Set<String>
    editor.putStringSet(NAME, sets); = methot untuk menyimpan nilai string bisa juga berupa integer, long dll.
    editor.commit(); = untuk menyimpan dan mengirimnya ke sharedpreferences.
    uiGet.displayText() = method yang kita buat pada package sebelumnya yaitu method yang ada di class uiGet

    kemudian di metho refreshing() :

    public void refreshing(View v){
     Log.i(logtag, "refreshed");
     //String value = saveName.getString(NAME,"Not Found");
     String value = "";
     Set<String> getset = saveName.getStringSet(NAME, null);
     Object[] display = getset.toArray();
     for(int s = 0; s < display.length;s++){
     value += display[s]+"\n";
     }
     uiGet.displayText(this, R.id.textView2,value);
    
     }
    

    Set<String> getset = variable untuk mendapatkan set yang sudah disimpan dalam XML yang memiliki key = NAME
    Object[] display = variable untuk menyimpan array dari set yang sudah di dapatkan sebelumnya dengan mengibah set tersebut menjadi array dengan cara getset.toArray();
    kemudian di looping seperti biasa

    sehingga lengkapnya MainActivity.java menjadi seperti berikut ini :

    package com.example.shareprefmulti;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import com.example.shareprefmulti.UiGet.uiGet;
    
    import android.annotation.SuppressLint;
    import android.app.Activity;
    import android.content.SharedPreferences;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    
    @SuppressLint("NewApi")
    public class MainActivity extends Activity {
    
     private static String logtag ="logtag";
     private static String NAME = "name";
     String prefValue ;
     Set<String> sets = new HashSet<String>();
     private SharedPreferences saveName;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
    
    saveName = getPreferences(MODE_APPEND);
     //saveName = getSharedPreferences(NAME, MODE_PRIVATE);
     }
    
     public void saving(View v){
     Log.i(logtag, "checked");
     SharedPreferences.Editor editor = saveName.edit();
    
     prefValue = uiGet.getText(this, R.id.nameIn);
     sets.add(prefValue);
     editor.putStringSet(NAME, sets);
     editor.commit();
     uiGet.displayText(this, R.id.textView2, "Saved");
     }
    
     public void refreshing(View v){
     Log.i(logtag, "refreshed");
     //String value = saveName.getString(NAME,"Not Found");
     String value = "";
     Set<String> getset = saveName.getStringSet(NAME, null);
     Object[] display = getset.toArray();
     for(int s = 0; s < display.length;s++){
     value += display[s]+"\n";
     }
     uiGet.displayText(this, R.id.textView2,value);
    
     }
    
    @Override
     public boolean onCreateOptionsMenu(Menu menu) {
    
    // Inflate the menu; this adds items to the action bar if it is present.
     getMenuInflater().inflate(R.menu.main, menu);
     return true;
     }
    
    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
     // Handle action bar item clicks here. The action bar will
     // automatically handle clicks on the Home/Up button, so long
     // as you specify a parent activity in AndroidManifest.xml.
     int id = item.getItemId();
     if (id == R.id.action_settings) {
     return true;
     }
     return super.onOptionsItemSelected(item);
     }
    }
    
  5. hasilnya seperti ini
    Screenshot from 2014-05-01 17:55:33

silahkan tinggalkan pesan kalo ada yang ditanyakan  . . . 😀

android sharedpreferences example With Multiple Value di Android
Tagged on:                     

Leave a Reply