728x90
알러트 다이얼로그는 액티비티가 아니므로
메인 액티비티의 onResume 함수가 실행이 안된다.
따라서 화면 갱신이 안된다.
즉 DB에 저장된 데이터를 삭제 했으니
메모리에 저장된 데이터도 삭제한다.
데이터가 변경되었으니 화면 갱신 함수 호출
= > notifyDataSetChanged()
전체 코드
public void onClick(View view) {
// 1. 어느 주소록을 삭제할 것인지
// 삭제할 주소록을 가져온다.
deleteIndex = getAdapterPosition();
Contact contact = contactList.get(deleteIndex);
// 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를 눌렀을 때
// 삭제할 주소록을 DB에서 삭제
DatabaseHandler db = new DatabaseHandler(context);
Contact contact = contactList.get(deleteIndex);
db.deleteContact(contact);
// 알러트 다이얼로그는 액티비티가 아니므로
// 메인 액티비티의 onResume 함수가 실행이 안된다.
// 따라서 화면 갱신이 안된다.
// 즉 DB에 저장된 데이터를 삭제 했으니
// 메모리에 저장된 데이터도 삭제한다.
contactList.remove(deleteIndex);
// 데이터가 변경되었으니 화면 갱신 함수 호출
// => notifyDataSetChanged()
notifyDataSetChanged();
}
});
builder.setNegativeButton("No",null);
builder.show();
}
});