#1. 잠시만 아래 코드가 무얼하는지 생각해 보세요.
intent.putExtra("title", ListViewItem.get(0).getTitle());
#2. 답을 하실 수 있다면, 다음 코드도 무얼 하는지 생각해 보세요.
for (int i = 0; i < ListViewItem.size(); i++) {
intent.putExtra("title", ListViewItem.get(i).getTitle());
}
#1은 ListViewItem의 첫번째 아이템의 타이틀을 intent의 "title"이라는 키값이 넣는 코드입니다.
#2는 ListViewItem의 모든 아이템의 타이틀을 루프를 돌면서 intent의 "title"이라는 업데이트하는 코드입니다.
#2의 결과는 "title"이라는 키값에 한개의 아이템에 대한 타이틀만 저장이 되겠죠?
만약, 둘 중의 하나라도 틀리셨다면, 자바 기초를 다시 공부하시기 바래요.
그런데 액티비티에서는, 아래처럼 ListViewItem 전체를 읽어오려고 하는데, 잘못 읽고 있습니다.
ListViewItem item = intent.getParcelableExtra("title");
ListViewItem은 리스트로 보이는데, intent.getParcelableExtra("title")는 아이템을 딱 하나만 읽을 수 있는 메소드입니다.
잠시 개발자 문서를 보시고 https://developer.android.com/reference/android/content/Intent#getParcelableExtra(java.lang.String)
getParcelableExtra가 뭘하는 메소드인지 확인해 보세요.
확인하셨다면, 위처럼 읽어오면 어떤 데이터가 읽힐까요?
이전 화면에서 아이템을 선택할 때 Intent에 데이터를 어떻게 전달하셨죠? 아래처럼 하셨죠?
for (int i = 0; i < ListViewItem.size(); i++) {
intent.putExtra("title", ListViewItem.get(i).getTitle());
}
님이 전달한 건, ListViewItem이라는 리스트에 들어 있는 모든 아이템을 돌면서 title이라는 String 필드를 "title"이라는 키값에 할당했죠?
그럼, 액티비티에서
intent.getParcelableExtra("title")
를 호출하게 되면, Parcelable 타입이 아니므로, null이 들어오게 됩니다. 만약 앞에서 전달한 타이틀을 읽어 들이려면,
intent.getStringExtra("title")
이렇게 하셨어야 겠죠? 이렇게 하면 ListViewItem의 맨마지막 아이템의 title필드가 읽히겠죠?
이해가 안가신다면, 다음을 읽지 마사고 처음부터 반복해서 읽으세요.