postSnapshot.getKey()가 리스트뷰의 각 아이템에 해당하는 데이터베이스의 키값인듯 한데요, for문 돌면서 모든 키값들을 다 null로 만들어준니 전체 삭제되는 것인듯 해요.
지우려고 하시는 position의 아이템의 키값만 받아와서 지우셔야되요. 전 리사이클러뷰로 한거지만 로직은 크게 다르지 않으니 참고해서 바꿔쓰심될것같아요. 그리고 setValue(null) 보다는 참조위치에서 removeValue()를 쓰시는게 가이드에서 나와있는 방법이니 더 좋지 않을까 싶어요.
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
// 친구 삭제
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("친추 정보 변경");
builder.setMessage("친구를 삭제 하시겠습니까?");
builder.setPositiveButton("확인",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
deleteRef = FirebaseDatabase.getInstance().getReference("AddFriend")
.child(currentUid)
.child(mFriend.get(holder.getAdapterPosition()).getKey());
deleteRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
dataSnapshot.getRef().removeValue(); //내 하위노드의 친구정보 삭제
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
builder.setNegativeButton("취소",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
builder.show();
return true;
}
});