이해가 안가는 부분이 있어서 이렇게 질문드립니다.
prvate String value = "Taek";
--------------------코드 중 일부 ---------------------------
data.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long allNum = dataSnapshot.getChildrenCount();
int maxNum = (int) allNum;
int minNum = 0;
int count = 0;
Iterable<DataSnapshot> ds = dataSnapshot.getChildren();
Iterator<DataSnapshot> ids = ds.iterator();
ArrayList<String> list = new ArrayList<String>();
while (ids.hasNext() && count < maxNum) {
Toast.makeText(RandomChatActivityUser.this, "유저검색중...", Toast.LENGTH_SHORT).show();
db_user = (String) ids.next().getValue();
if(db_user == value)
< ---- 이 부분인데요. 제가 Firebase db에 변수 value를 저장했고, 제 예상대로라면
이 if문에서 true 영역이 실행이 되어야 했는데; 결과는 false 영역이 실행이되버리네요
{
Toast.makeText(RandomChatActivityUser.this, "유저검색중...(2)", Toast.LENGTH_SHORT).show();
Toast.makeText(RandomChatActivityUser.this, db_user, Toast.LENGTH_SHORT).show();
<-- 여기서 Toast로 db_user를 호출해보았는데 역시나 value와 같은 값이였습니다.
list.add(db_user);
count++;
}
else
{
Toast.makeText(RandomChatActivityUser.this, "유저없음", Toast.LENGTH_SHORT).show(); <-- 왜 db에서 가져온 값과 value가 같음에도 불구하고 이 부분이 실행이 되는지 궁금합니다;;
}
}
user_size = list.size();
if(user_size != 0)
{
String num = String.valueOf(user_size);
Toast.makeText(RandomChatActivityUser.this, num, Toast.LENGTH_LONG).show();
int randomNum = new Random().nextInt(user_size) + minNum;
if (user_size >= 1 && user_size != 0)
{
random_user = list.get(randomNum);
Toast.makeText(RandomChatActivityUser.this, "실행됨", Toast.LENGTH_LONG).show();
}
}
else
{
Toast.makeText(RandomChatActivityUser.this, "유저가 없습니다.", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(), "onCancelled", Toast.LENGTH_SHORT).show();
}
});
답변 부탁드리겠습니다.