Kamis, 21 Mei 2015

Android SharedPreferences

halooo …
Kali ini saya akan membagikan tutorial cara menggunakan SharedPreferences di Android dan menampilkan pada listview. Saya jelaskan dulu apa itu SharedPreferences.
SharedPreferences hanya dapat menyimpan data dalam bentuk key-value pair sehingga mudah dimodifikasi. SharedPreferences penyimpanan datanya kecil. Data yang sudah disimpan dalam shared akan tersimpan selama aplikasi terinstall dan data akan tetap ada meskipun hp di restart. Jika SharedPreferences ingin di hapus gunakan code clear(). SharedPreferences biasanya di gunakan seperti (auto login,  menyimpan history yang datanya kecil, pengecekan data, dan lain lain).



Berikut contoh programnya dan beserta penjelasannya. Jika masih ada yang bingung silahkan tinggalkan pertanyaan kalian di komentar :
MainActivity.java
package com.kreativdeveloper.sharedpreferences;
/**
 * @author yudirahmat
 * @email yudirahmat7@gmail.com
 * @wordpress kreativdeveloper.wordpress.com
 */
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
 private EditText mNama, mTelp;
 private Button btnSave;
 private ListView mListView;

 private SharedPreferences sharedPreference;
 private Editor editor;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 //deklarasi untuk shared
 sharedPreference = getSharedPreferences("shared_kreativ", Context.MODE_PRIVATE);
 editor = sharedPreference.edit(); 
 
 mNama = (EditText) findViewById(R.id.nama);
 mTelp = (EditText) findViewById(R.id.telp);
 btnSave = (Button) findViewById(R.id.button_save);
 mListView = (ListView) findViewById(R.id.listview);
 
 //menampilkan data dari shared ke listview
 setDefaultData();
 
 btnSave.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 String nama = mNama.getText().toString(); 
 String telp = mTelp.getText().toString();
 
 if(nama.equals("") && telp.equals("")) {
 Toast.makeText(getApplicationContext(), "Silahkan Isi Semua Data", Toast.LENGTH_SHORT).show();
 } else {
 int jumlah = sharedPreference.getInt("jumlah_data", 1);
 
 //untuk menyimpan pada shared
 editor.putInt("jumlah_data", jumlah + 1); //digunakan untuk jumlah data
 editor.putString("nama" + jumlah, nama); //nama yang di input lalu di simpan di shared
 editor.putString("telp" + jumlah, telp); //telp yang di input lalu di simpan di shared
 editor.commit();
 
 //input clear
 mNama.setText("");
 mTelp.setText("");
 }
 
 //menampilkan data ke listview
 setDefaultData();
 
 }
 });
 }
 
 private void setDefaultData() {
 ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(this, R.layout.listview_item, getArray());
 mListView.setAdapter(mAdapter);
 getListViewSize(mListView);
 }
 
 //menampilkan data dari shared ke arraylist untuk ditampilkan ke listview
 private List<String> getArray() {
 List<String> list = new ArrayList<String>();
 
 int jumlah = sharedPreference.getInt("jumlah_data", 0);
 
 for (int i = 1; i < jumlah; i++) {
 String nama = sharedPreference.getString("nama" + i, "");
 String telp = sharedPreference.getString("telp" + i, "");
 
 list.add("Nama+ nama + "\n" + "Telp : " + telp);
 }
 
 // jika list sudah null maka arraylist akan di query secara descending
 // agar data paling terakhir input ada di atas
 Collections.reverse(list);
 
 return list;
 }
 
 //di gunakan untuk set height listview jika dalam scroolview
 public void getListViewSize(ListView myListView) {
 ListAdapter myListAdapter = myListView.getAdapter();
 if (myListAdapter == null) {
 return;
 }
 
 int totalHeight = 0;
 for (int size = 0; size < myListAdapter.getCount(); size++) {
 View listItem = myListAdapter.getView(size, null, myListView);
 listItem.measure(0, 0);
 totalHeight += listItem.getMeasuredHeight();
 }
 
 ViewGroup.LayoutParams params = myListView.getLayoutParams();
 params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1));
 myListView.setLayoutParams(params);
 
 }

}
Masukan kode berikut di 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:background="#f0f0f0" >

 <LinearLayout
 android:id="@+id/layout_header"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:background="#31b6e7"
 android:orientation="vertical" >

 <ImageView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="center"
 android:contentDescription="@string/app_name"
 android:src="@drawable/ic_logo" />
 </LinearLayout>

 <ScrollView
 android:id="@+id/scr_content"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:layout_above="@+id/textview1"
 android:layout_below="@+id/layout_header" >

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="10dp"
 android:orientation="vertical"
 android:padding="10dp" >

 <EditText
 android:id="@+id/nama"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:hint="Nama"
 android:inputType="text"
 android:maxLength="25"
 android:padding="10dp" />

 <EditText
 android:id="@+id/telp"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="5dp"
 android:hint="Nomor Telp"
 android:inputType="number"
 android:maxLength="15"
 android:padding="10dp" />

 <Button
 android:id="@+id/button_save"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="10dp"
 android:text="Simpan" />

 <View
 android:layout_width="match_parent"
 android:layout_height="0.5dp"
 android:layout_marginTop="15dp"
 android:background="#838383" />

 <ListView
 android:id="@+id/listview"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_marginTop="10dp"
 android:divider="#838383"
 android:dividerHeight="0.5dp"
 android:listSelector="@android:color/transparent" />
 </LinearLayout>
 </ScrollView>

 <TextView
 android:id="@+id/textview1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:background="#31b6e7"
 android:gravity="center"
 android:padding="10dp"
 android:text="Kreativdeveloper.wordpress.com"
 android:textColor="#ffffff"
 android:textSize="12sp" />

</RelativeLayout>
Sekarang buat xml dengan nama “listview_item.xml”. Berikut kodenya :
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:padding="10dp"
 android:singleLine="false"
 android:textColor="#838383"
 android:textSize="15sp" >

</TextView>
Untuk full source code nya kalian bisa download disini
Sekian dari tutorial nya. Semoga bermanfaat  :) :D
jangan lupa tinggalkan komentar kalian disini  :D

2 komentar:

  1. Sangat berguna makasih ya.... oiya btw
    belajarnya dimana mas?

    BalasHapus
  2. Top 10 Casino Apps - Casinoworld
    In this section we'll walk you through our novcasino selection of top casino apps, and hopefully casinosites.one you'll find plenty of 바카라사이트 useful information on the top How septcasino.com do you use febcasino PayPal?Are there any deposit bonuses at your casino?

    BalasHapus