본문 바로가기

프로젝트/소프트웨어공학

[소프트웨어공학] Android Studio 이슈 #2

어댑터에 대한 이해!

 

onBindViewHolder에서 데이터의 바인딩이 일어난다.

-> 이때 제대로된 데이터베이스의 값을 가지지 못한다.

=> 쓰레드 속도가 지멋대로임. 클래스 생성하여 함수를 실행하여 데이터를 읽는 것은 holder에 뷰가 바인딩되는 것보다 한참 느림.

 

이 함수로 데이터를 판별하려 하였으나 어댑터가 뷰를 바인딩하는 속도를 못 따라옴!

public boolean isExist(){

        try {
            databaseReference.child("TodoCell").child(currentUser).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot snapshot) {

                    for(DataSnapshot children: snapshot.getChildren()){

                        if (children.getKey().equals(displayDate)) {
                            cnt++;
                            Log.e("asdf", String.valueOf(cnt));
                        }
                    }

                }

                @Override
                public void onCancelled(@NonNull DatabaseError error) {
                    //디비를 가져오는 중 에러 발생 시
                    Log.e("FirebaseTodoCell", String.valueOf(error.toException()));
                }
            });
        }catch (NullPointerException e){
            Log.e("cntError", String.valueOf(cnt));
        }finally{
            Log.e("cnt", String.valueOf(cnt));

            if(cnt > 0){
                return true;
            } else{
                return false;
            }
        }

    }

 

따라서, 미리 HashSet에 데이터를 집어넣고 onBindViewHolder에서 holder의 itemView의 날짜와 비교하여 값이 일치하는지 확인함.