마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

getter setter 파이어베이스 질문

0 추천
public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    // 1. type casting
                    item = postSnapshot.getValue(VibleWordItem.class);
                    item.setKey(postSnapshot.getKey());
                    Log.d("tag","111111"+item.getKey());
                }

                adapter.notifyDataSetChanged();
            }

여기서 setKey를 하고 로그 getKey를 찍어보면 잘나오는걸 확인했는데,

        vibleList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
               
                item = vibleWord.get(i);

                Log.d("tag","getkey123"+item.getKey());
                check = !check;
                item.setLike(check);
                EnglishWordApplication.mDatabase.getReference("vible").child(item.getKey()).setValue(item);
                EnglishWordApplication.mDatabase.getReference("remember").push().setValue(item);
            }
        });

여기서 getKey를 하면 널을 가져옵니다.. 첫번째 코드부분 메소드를 두번째보다 당연히 위에 써놨구요..

getkey에서 잘가져오다가 왜 클릭리스너안에서는 getkey가 안찍히는걸까요..?
익명사용자 님이 2019년 8월 12일 질문

1개의 답변

0 추천

vibleWord 값을 세팅하는곳이 안보이는데요..

lock을 잡아야 하겠지만 대략 아래와 같이 리스트를 업데이트 해 주셔야 할 듯 합니다.

public void onDataChange(DataSnapshot dataSnapshot) {

vibleWord.clear();// 기존 리스트 삭제

for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

    // 1. type casting

    item = postSnapshot.getValue(VibleWordItem.class);

    item.setKey(postSnapshot.getKey());

    Log.d("tag","111111"+item.getKey());

    vibleWord.add(item); // 아이템 추가 

}

adapter.notifyDataSetChanged();

}

익명사용자 님이 2019년 8월 13일 답변
그래도 널포인터나옵니다 ..
...