📝RecyclerView Adapter에서 AlertDialog 처리
어댑터 클래스에서 ViewHolder 클래스를 만들어 리사이클러뷰의 이미지를 클릭하면 AlertDialog가 뜨고
AlertDialog의 YES를 누르면 해당 항목이 삭제되고 기존 리스트가 업데이트되게 코드를 입력
리사이클러뷰 화면 갱신(업데이트) 함수 notifyDataSetChanged()
public class ViewHolder extends RecyclerView.ViewHolder {
TextView txtName;
TextView txtPhone;
ImageView imgDelete;
CardView cardView;
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);
// 이미지를 클릭했을때의 이벤트
imgDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 1. 어느 주소록을 삭제할 것인지 삭제할 주소록을 가져온다
deleteIndex = getAdapterPosition();
// 2. 알러트 다이얼로그
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("주소록 삭제");
builder.setMessage("정말 삭제하시겠습니까");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 3. 알러트 다이얼로그에서 Yes 눌렀을때 처리
// 삭제할 주소록을 데이터 베이스에서 삭제
DatabaseHandler db = new DatabaseHandler(context);
Contact contact = contactList.get(deleteIndex);
db.deleteContact(contact);
// 알러트다이얼로그는 액티비티가 아니라 메인 액티비티의 onResume 함수가 실행 안된다
// = 화면 갱신이 안된다
// 디비에 저장된 데이터 삭제했으니 메모리에 저장된 데이터도 삭제한다
contactList.remove(deleteIndex);
// 데이터가 변경되었으니 화면 갱신하라고 함수 호출
notifyDataSetChanged();
}
});
builder.setNegativeButton("NO", null);
builder.show();
}
});
}
}
'Android Studio' 카테고리의 다른 글
[Android Studio] TextView 글자 초과 말줄임(...) 으로 처리하기 (0) | 2023.02.02 |
---|---|
[Android Studio] EditText 줄바꾸기, 뷰 크기 조절 (0) | 2023.02.02 |
[Android Studio] 다른 액티비티로 클래스의 객체를 전달하기 (0) | 2023.02.01 |
[Android Studio] RecyclerView Adapter에서 새로운 액티비티를 실행하기 (0) | 2023.02.01 |
[Android Studio] RecyclerView 리스트 역순으로 바꾸기 (0) | 2023.02.01 |
댓글