본문 바로가기
Android Studio

[Android Studio] RecyclerView Adapter에서 새로운 액티비티를 실행하기

by coding_su 2023. 2. 1.

📝RecyclerView Adapter에서 새로운 액티비티를 실행하기

RecyclerView Adapter에서 ViewHolder에 카드뷰를 클릭했을때의 이벤트를 입력해주려고하는데

새로운 액티비티를 열기 위해서는 새로운 액티비티를 실행할 액티비티가 필요한데 어댑터는 액티비티가 아닌 클래스이다

어댑터 클래스의 멤버변수와 생성자를 만들어줄때 아래 코드처럼 만들었는데

Context context;
List<Contact> contactList;

public ContactAdapter(Context context, List<Contact> contactList) {
    this.context = context;
    this.contactList = contactList;
}

 

메인 액티비티에서 어댑터 만들어 리사이클러뷰에 셋팅할때 아래 코드처럼 MainActivity.this 값을 줘서

인텐트를 만들때 액티비티를 입력하는 자리에 context를 입력하면된다

adapter = new ContactAdapter(MainActivity.this, contactList);
recyclerView.setAdapter(adapter);

 

ViewHolder 생성자에 이벤트 입력(다른 액티비티 실행)

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) {
            int index = getAdapterPosition();
            Contact contact = contactList.get(index);

            // 수정 액티비티를 띄운다
            // 어떤 액티비티가 어떤 액티비티를 띄운다 > 인텐트에 있어야한다
            Intent intent = new Intent(context, EditActivity.class);
            intent.putExtra("contact", contact);
            context.startActivity(intent);
        }
    });

}

댓글