📝다른 액티비티로 클래스의 객체를 전달하기
아래 코드는 카드뷰를 클릭하면 새로운 액티비티가 열리면서 그 액티비티에 객체를 전달하는 코드이다
+ RecyclerView에서 몇번째 행을 눌렀는지 알 수 있는 어댑터의 함수는 getAdapterPosition() 이다
public ViewHolder(@NonNull View itemView) {
super(itemView);
txtName = itemView.findViewById(R.id.txtName);
txtPhone = itemView.findViewById(R.id.txtPhone);
imgDelete = itemView.findViewById(R.id.imgDelete);
cardView = itemView.findViewById(R.id.cardView);
// 카드뷰를 클릭했을때의 이벤트를 입력
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 1. 인텐트에 유저가 어떤 행을 눌렀는지 파악하여
int index = getAdapterPosition();
// 누른 이름과 전화번호를 담아서 넘긴다
Contact contact = contactList.get(index);
Intent intent = new Intent(context, EditActivity.class);
intent.putExtra("contact", contact);
context.startActivity(intent);
}
});
}
액티비티를 띄울때 아래 코드처럼 하나하나 보내도 되고 Serializable해서 보내도 되지만
해당 클래스(Contact)에 implements Serializable 하면 위 코드처럼 바로 보낼 수 있다
intent.putExtra("id", contact.id);
intent.putExtra("name", contact.name);
intent.putExtra("phone", contact.phone);
// contact 데이터를 직렬화해서 보낸다
intent.putExtra("contact", (Serializable) contact);
대신 가져올때 직렬화한걸 원상복구 해서 가져온다
(Contact) getIntent().getSerializableExtra();
// getSerializableExtra로 가져온다
Contact contact = (Contact) getIntent().getSerializableExtra("contact");
// 사용하기
editName.setText(contact.name);
editPhone.setText(contact.phone);
'Android Studio' 카테고리의 다른 글
[Android Studio] EditText 줄바꾸기, 뷰 크기 조절 (0) | 2023.02.02 |
---|---|
[Android Studio] RecyclerView Adapter에서 AlertDialog 처리 (0) | 2023.02.02 |
[Android Studio] RecyclerView Adapter에서 새로운 액티비티를 실행하기 (0) | 2023.02.01 |
[Android Studio] RecyclerView 리스트 역순으로 바꾸기 (0) | 2023.02.01 |
[Android Studio] RecyclerView와 Adapter를 사용해 리스트를 화면에 표시하기 (0) | 2023.02.01 |
댓글