본문 바로가기
안드로이드 스튜디오 앱 개발/실제 앱 개발 과정

[Android Studio] 아이템 값 중복검사 for 문을 이용하여 쉽게 하는 방법 알아보기

by 망댕이 2023. 7. 2.
반응형

리사이클러뷰에 존재하는 아이템들 중 내가 리사이클러뷰에 추가할 아이템과 값이 일치한 것이 있는지를 알아낼 수 있도록 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 이름

 

반응형