반응형
리사이클러뷰에 존재하는 아이템들 중 내가 리사이클러뷰에 추가할 아이템과 값이 일치한 것이 있는지를 알아낼 수 있도록 for 문을 이용하여 작성해 보았습니다.
우선 RecyclerView와 Adapter가 모두 만들어졌다는 가정하에
int j = 0;//중복되지 않은 상태
for(int i = 0; i < numberAdapter.getItemCount(); i++) {
if(numberAdapter.getItem(i).getNumber().equals(String.valueOf(number_except))){
j = 1;//중복인 상태
break;
{
if(j = 1){
AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
builder.setTitle("주의");
builder.setMessage("숫자를 이미 추가하였습니다.");
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}else if(j = 0){
numberAdapter.addItem(new Number(String.valueOf(number_except)));
recyclerView_setting.setAdapter(numberAdapter);
}
j = 0;
for 문을 이용하여 리사이클러뷰 안에 생성된 아이템 개수만큼 반복하여 일일이 리사이클러뷰 안에 있는 아이템과 number_except(추가하려는 아이템)이 중복되는 것이 있는지 확인하려고 합니다.
이와 동시에 임의의 값 정수 j 값을 사용하여 현재 중복된 상태인지 중복이 아닌 상태인지 구분하도록 하여 j = 1일 때는 현재 중복된 아이템을 추가하려 한다는 경고 메시지를 j = 0일 때는 중복된 아이템이 없다는 의미이므로 아이템을 추가를 하려 합니다.
하지만 위 코드로는 완전하게 중복검사를 실행하지 못했습니다.
int j = 0;//중복되지 않은 상태
for(int i = 0; i < numberAdapter.getItemCount(); i++) {
Log.d(TAG, numberAdapter.getItemCount() + " : 리사이클러뷰에 존재하는 총 아이템 개수");
if (numberAdapter.getItem(i).getNumber().equals(String.valueOf(number_except))) {
j = 1;
AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
builder.setTitle("주의");
builder.setMessage("숫자를 이미 추가하였습니다.");
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
Log.d(TAG, "새로 추가하는 제외 숫자가 현재 중복 메세지 전달완료");
}
});
AlertDialog dialog = builder.create();
dialog.show();
break;
}
}
if (j == 0){
numberAdapter.addItem(new Number(String.valueOf(number_except)));
recyclerView_setting.setAdapter(numberAdapter);
}
j = 0;
그래서 for 문을 이용하여 리사이클러뷰에 있는 모든 아이템을 추가하려는 아이템과 값이 일치한지 확인 후 일치하는 것이 있으면 j = 1 값으로 바꾸어주고 중복되는 것이 없으면 아무 일도 일어나지 않게 하였습니다.
그러면 앞에서 입력한 int j = 0; 값을 그대로 가져와 for 문밖에 있는 if(j == 0){ --- }에 해당하여 아이템을 정상적으로 추가할 수 있습니다.
*numberAdapter - 어뎁터 이름
*number_except - 아이템을 추가할 textView
*recyclerView_setting - recyclerView 이름
반응형
'안드로이드 스튜디오 앱 개발 > 실제 앱 개발 과정' 카테고리의 다른 글
[Android Studio] 액티비티 전환 시 예약된 진동(스케줄러 취소하기)취소하기 (0) | 2023.07.11 |
---|---|
[Android Studio] 안드로이드 스튜디오 어댑터(Adapter)에 int형 값을 addItem 하는 방법과 예제 알아보기 (0) | 2023.07.03 |
안드로이드 스튜디오 카드 뒤집기 애니메이션 만들기 [Android Studio] (0) | 2023.06.30 |
안드로이드 스튜디오 앱 아이콘 만들기 [Android Studio] (1) | 2023.06.27 |
안드로이드 스튜디오 뒤로가기 버튼 막기 및 2번 클릭시 종료하기 onBackPressed() [Android Studio] (0) | 2023.06.23 |