티스토리 뷰
Android의 Parcelable 인터페이스를 알아보려고 합니다. java에는 synchronized 인터페이스를 사용하고 있고, 해당 인터페이스는 Android에서도 사용이 가능합니다. Android에서는 Parcelable 인터페이스를 통해서 내부 데이터 교환에 사용이 가능합니다.
제가 만든 예제는 Intent에 많은 데이터를 실어보내기위해서 Parcelable를 사용하여 만들어봤습니다.
XML 파일의 소스코드는 해당 내용에서 제외합니다. 해당 프로젝트 코드는 아래 중요 코드를 제외하고, 다운받아 테스트할 수 있습니다.
자세한 설명 및 Parcelable 인터페이스 설명은 Android Developer 사이트에서 확인 가능합니다.
http://developer.android.com/reference/android/os/Parcelable.html
Parclable Public Method
다음 2 Method는 항상 구현이 되어야 합니다.
abstract int | describeContents() |
abstract void |
writeToParcel(Parcel dest, int flags) |
주요 소스코드
Parcelable 메인 - main Activity를 구현
submit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Intent를 생성합니다. Intent intent = new Intent(ParcelableEX.this, ParcelableEX2.class); //intent에 저장하기 위해서 Parcelable를 상송받아 구현해둔 UserInfo에 객체를 생성합니다. intent.putExtra("user", new UserInfo(editName.getText().toString(), Integer.parseInt(editAge.getText().toString()), editEmail.getText().toString())); startActivity(intent); } });
Parcelable 두 번째 화면 - 두 번째 Activity를 구현하고, 넘어온 값을 뿌려주기 위한 Activity
//Intent를 통해 넘어온 값을 불러옵니다. Intent intent = getIntent(); //intent의 ParcelableExtra을 불러옵니다. UserInfo user = intent.getParcelableExtra("user"); //불러온 데이터를 각각 불러와 화면에 뿌립니다. editName.setText(user.getName()); editAge.setText(String.valueOf(user.getAge())); editEmail.setText(user.getEamil());
Parcelable 구현 - Parcelable 인터페이스를 상속 받아 구현
//Parcelable를 생성하기 위한 생성자 //임의 생성 public UserInfo(String name, int age, String email) { this.mName = name; this.mAge = age; this.mEmail = email; } //Parcelable를 생성하기 위한 생성자 Parcel를 파라메타로 넘겨 받음 private UserInfo(Parcel source) { // TODO Auto-generated constructor stub mName = source.readString(); mAge = source.readInt(); mEmail = source.readString(); } //각 값을 넘겨주기 위한 get터 생성 public String getName() { return mName; } public int getAge() { return mAge; } public String getEamil() { return mEmail; } //Parcelable을 상속 받으면 필수 Method @Override public int describeContents() { // TODO Auto-generated method stub return 0; } //Parcelable의 write를 구현하기 위한 Method @Override public void writeToParcel(Parcel arg0, int arg1) { // TODO Auto-generated method stub arg0.writeString(mName); arg0.writeInt(mAge); arg0.writeString(mEmail); } //Parcelable 객체로 구현하기 위한 Parcelable Method ArrayList구현 등.. public static final Parcelable.Creator<userinfo> CREATOR = new Parcelable.Creator<userinfo>() { @Override public UserInfo createFromParcel(Parcel source) { // TODO Auto-generated method stub return new UserInfo(source); } @Override public UserInfo[] newArray(int size) { // TODO Auto-generated method stub return new UserInfo[size]; } };
결과 화면
메인 화면에서 이름, 나이, 이메일을 입력받고 전송 버튼을 통해 Parcelable 데이터로 저장하고, Intent를 통해 전송합니다.
두 번째 화면에서 Intent를 통해서 해당 데이터를 받고, Parcelable에서 해당 실제데이터를 불러와 화면에 뿌려줍니다.
예제 파일 다운로드
마무리
간단히 Parcelable를 구현해보았습니다. ArrayList를 통해서 구현할 수 있는 예제도 있으니 찾아보시면 좋을 듯 합니다.^^;
'Android Develop' 카테고리의 다른 글
Android ExpandableListView Custom 예제 (8) | 2013.01.21 |
---|---|
ExpandableListView 단순 예제 (15) | 2013.01.16 |
3단계로 간단하게 Android 개발 환경 만들기(Android Developer Tools) (2) | 2012.12.01 |
Android C2DM에서 GCM으로 변경 된 내용은? (0) | 2012.07.03 |
안드로이드 4.1 젤리빈 SDK (3) | 2012.06.28 |
댓글