RecyclerView Adapter에서 ViewHolder에 카드뷰를 클릭했을때의 이벤트를 입력하려고 한다.
새로운 액티비티를 열기 위해서는 새로운 액티비티를 실행할 액티비티가 필요한데 어댑터는 액티비티가 아니다.
MainActivity
// 어뎁터 만들고 화면에 적용
adapter = new ContactAdapter(MainActivity.this, contactArrayList);
recyclerView.setAdapter(adapter);
메인액티비티에서 어뎁터 만들고 화면에 적용하는 부분에서 첫번째 인자에 MainActivity.this를 넣었는데
ContactAdapter
Context context;
ArrayList<Contact> contactArrayList;
public ContactAdapter(Context context, ArrayList<Contact> contactArrayList) {
this.context = context;
this.contactArrayList = contactArrayList;
}
ContactAdapter 클래스를 들어가보면 위 MainActivity.this가 생성자 함수의 첫번째 인자의 context로 들어온다.
결과) ContactAdapter
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, UpdateActivity.class);
int index = getAdapterPosition();
Contact contact = contactArrayList.get(index);
intent.putExtra("index", index);
intent.putExtra("contact", contact);
((MainActivity) context).launcher.launch(intent);
}
});
그러므로 인덴트 객체를 생성할 때 생성자의 첫 인자에 MainActivity.this가 아닌 context를 입력하면 된다.
'Android Studio' 카테고리의 다른 글
[Android Studio] 다른 액티비티로 데이터 전달 시 클래스의 객체를 전달하는 방법 (0) | 2023.12.28 |
---|---|
[Android Studio] RecyclerView에서 몇 번째 행을 눌렀는지 알 수 있는 어뎁터 함수 getAdapterPosition() (0) | 2023.12.28 |
[Android Studio] RecyclerView와 Adapter를 이용해 리스트를 화면에 표시하는 방법 (0) | 2023.12.28 |
[Android Studio] 메뉴 아이콘을 벡터 이미지로 만드는 방법 (0) | 2023.12.27 |
[Android Studio] SharedPreferences (0) | 2023.12.27 |