마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ArrayList 값을 다른 Activiy ArrayList에 값 넘겨주기 (Parcelable 이용)

0 추천

** MainActivity.java **

public class MainActivity extends Activity {

 
Button listViewButton;
 
String Tag = "list_test";
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
Log.d(Tag, "앱실행");
 
final ArrayList<Person> m_orders = new ArrayList<Person>();
 
Log.d(Tag, "배열 생성 완료");
 
Person p1 = new Person("aaa", "high");
Person p2 = new Person("bbb", "midle");
Person p3 = new Person("ccc", "low");
Person p4 = new Person("ddd", "null");
 
Log.d(Tag, "배열 값 넣기 준비");
 
m_orders.add(p1);
m_orders.add(p2);
m_orders.add(p3);
m_orders.add(p4);
 
Log.d(Tag, "배열 값 넣기 완료");
 
listViewButton = (Button) findViewById(R.id.listViewButton);
 
listViewButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(Tag, "클릭 눌렀음 ");
 
Intent intent = new Intent(v.getContext(), list_test.class);
Log.d(Tag, "intent 생성");
 
intent.putParcelableArrayListExtra("test", m_orders);
Log.d(Tag, "intent 값 전송");
 
v.getContext().startActivity(intent);
Log.d(Tag, "액티비티 넘어감 ");
}
});
}
 
public class Person implements Parcelable {
 
private String Name;
private String Risk;
 
public Person(){
 
}
 
public Person(String _Name, String _Risk) {
super();
this.Name = _Name;
this.Risk = _Risk;
}
 
public Person(Parcel in){
readFromParcel(in);
}
 
public String getName() {
return Name;
}
 
public void setName(String Name) {
this.Name = Name;
}
 
public String getRisk() {
return Risk;
}
 
public void setRisk(String Risk) {
this.Risk = Risk;
}
 
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
 
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(Name);
dest.writeString(Risk);
}
 
public void readFromParcel(Parcel in){
Name = in.readString();
Risk = in.readString();
}
 
@SuppressWarnings("rawtypes")
public final Parcelable.Creator CREATOR = new Parcelable.Creator(){
 
@Override
public Person createFromParcel(Parcel in){
return new Person(in);
}
 
@Override
public Person[] newArray(int size){
return new Person[size];
}
};
}
 
}
 
 
** list_test.java **
 
public class list_test extends ListActivity{
 
String Tag = "list_test";
 
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.show_test);
 
ArrayList<Person> m_orders = new ArrayList<Person>();
 
Log.d(Tag,"클릭 후 페이지 넘어옴 ");
 
Intent intent = getIntent();
Log.d(Tag,"인텐트 불러옴 ");
 
m_orders = intent.getParcelableArrayListExtra("test");
Log.d(Tag,"인텐트로 객체 불러오기 완료");
}
 
 
 
------------------------------------------------------------------------
 
어디가 문제인지 잘 몰라 여쭈워보고자 합니다.
 
다른 액티비티에 ArrayList 값을 넘겨주려고 하는데 넘어갈때 오류가 발생하네요
cansus (200 포인트) 님이 2014년 10월 9일 질문
어떤 오류가 발생하는지 알아야겠죠?

2개의 답변

0 추천
CREATOR는 static이어야 합니다.

static 한정사 넣어주시고, Person이 메인 액티비티 안에 내부클래스(inner class)로 되어있는건가요?

별도의 클래스로 빼주셔야 할 것 같은데요.
cc1232 (35,280 포인트) 님이 2014년 10월 11일 답변
0 추천
string으로 바꿀 수 있는 정보들만 있다면, 저는 json 문자열을 넘깁니다
쎄미 (162,410 포인트) 님이 2014년 10월 11일 답변
...