Android Passing Data Antara Activity Using Parcelable Model

Passing data antara activity yang berbeda pada android dapat saja menggunakan beberapa cara, tergantung atas keinginan sang programmernya ada yang passing data menggunakan shared preferences ada yang menggunakan bundle dan lainnya.

Simplescriptcode akan memberikan contoh untuk mengirimkan data menggunakan Bundle, karena Android menyarankan hal ini merupakan yang terbaik dalam passing data dari satu activity ke activity lainnya. 

Untuk secara langsung simplescriptcode akan langsung saja, setelah anda membuat project baru dan mencoba untuk menjalankannya anda mendapatkan applikasi dengan hasilnya tampilan Hello World! maka anda perlu menambahkan sebuah class sebagai model yang nantinya merupakan data yang akan di kirimkan.

package com.simplescriptcode.parsingdata;

import android.os.Parcel;
import android.os.Parcelable;

public class UserModel implements Parcelable{

public UserModel(){
}
private String userID;
private String userName;
private String userAddress;
private String userContact;
/**
* METHOD OVERRIDE UNTUK PARCELABLE
* - describeContents() 
* - writeToParcel(Parcel dest, int flags)
*/

@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(userID);
dest.writeString(userName);
dest.writeString(userAddress);
dest.writeString(userContact);
}
// Constructor For Model to get parcelable
public UserModel(Parcel in){
userID = in.readString();
userName = in.readString();
userAddress = in.readString();
userContact = in.readString();
}
public static final Parcelable.Creator<UserModel> CREATOR = new Parcelable.Creator<UserModel>() {
public UserModel createFromParcel(Parcel in) {
return new UserModel(in);
}

public UserModel[] newArray(int size) {
return new UserModel[size];
}
};
/**
* END PARCELABLE
*/
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserContact() {
return userContact;
}
public void setUserContact(String userContact) {
this.userContact = userContact;
}
}

Nah setelah selesai membuat Model yang parcelable selanjutnya untuk melakukan testing kita perlu buat  Activity yang baru (ex:SecondActivity.java) dalam activity ke dua akan menangkap object(UserModel) yang kita kirimkan.

Ubah View pada "layout_main.xml" seperti berikut ini:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation="vertical">

    <EditText 
        android:id="@+id/etUserName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="User name" />
    <EditText
        android:id="@+id/etUserAddress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Address"  />
    <EditText
        android:id="@+id/etUserContact"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:hint="Contact Email" />
    <Button
        android:id="@+id/btnAddUserName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Send To Other Activity" />
</LinearLayout>

Setelah itu tambahkan juga sebuah XML file yang hampir sama dengan layout_main.xml. Sebagai percobaan kali ini simplescriptcode memberikan nama layout_second.xml  serperti berikut ini :

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:orientation="vertical">
<TextView 
   android:id="@+id/tvUID"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" />
    <EditText 
        android:id="@+id/etUserName2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="User name" />
    <EditText
        android:id="@+id/etUserAddress2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Address"  />
    <EditText
        android:id="@+id/etUserContact2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:hint="Contact Email" />


</LinearLayout>


Nah pada activity main ubahlah codingan sehingga menjadi berikut ini :

package com.simplescriptcode.parsingdata;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity{

private EditText etUserName;
private EditText etAddress;
private EditText etEmail;
private Button btnAdd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
etUserName = (EditText) findViewById(R.id.etUserName);
etAddress = (EditText) findViewById(R.id.etUserAddress);
etEmail = (EditText) findViewById(R.id.etUserContact);
btnAdd = (Button) findViewById(R.id.btnAddUserName);

Toast.makeText(getBaseContext(), "On Main Activity", Toast.LENGTH_SHORT).show();

btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UserModel user = new UserModel();
user.setUserID("0001");
user.setUserName(etUserName.getText().toString());
user.setUserAddress(etAddress.getText().toString());
user.setUserContact(etEmail.getText().toString());

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle b = new Bundle();
b.putParcelable("USER_LIST", user);
intent.putExtras(b);
startActivity(intent);

}
});
}
}

Dan pada Activity ke dua seperti berikut ini :

package com.simplescriptcode.parsingdata;

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SecondActivity extends Activity{

private EditText etUserName;
private EditText etAddress;
private EditText etEmail;
private TextView tvUID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_second);
Toast.makeText(getBaseContext(), "On Second Activity", Toast.LENGTH_SHORT).show();
tvUID = (TextView) findViewById(R.id.tvUID);
etUserName = (EditText) findViewById(R.id.etUserName2);
etAddress = (EditText) findViewById(R.id.etUserAddress2);
etEmail = (EditText) findViewById(R.id.etUserContact2);
Bundle b = getIntent().getExtras();
if (b != null){
UserModel user = b.getParcelable("USER_LIST");
tvUID.setText(user.getUserID());
etUserName.setText(user.getUserName());
etAddress.setText(user.getUserAddress());
etEmail.setText(user.getUserContact());
}
}
}

Nah setelah itu anda dapat menjalankan aplikasi yang baru anda buat. 

Selamat anda telah berhasil membuat Applikasi yang dapat mengirimkan data model dari activity ke activity lainnya. Nantikan edisi berikutnya untuk simulasi user ke dalam database.

Aplikasi jadinya dapat di download di  >> SINI <<

No comments:

Post a Comment