public void getFirstName(View view) {
Query newQuery = database.getReference("users").orderByChild("firstName");
newQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Iterable<DataSnapshot> iterator = dataSnapshot.getChildren();
for (DataSnapshot child : iterator) {
Friends friends = child.getValue(Friends.class);
Toast.makeText(DBActivity.this, friends.firstName, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我正在尝试检索所有朋友的名字。当我为上面提到的JSON文件结构尝试上面的代码时,我收到此错误“无法将java.lang.String类型的对象转换为类型com.example.seth.photopicker.Friends”。请帮我解决这个问题。
答案 0 :(得分:1)
试试这个:
Query newQuery = database.getReference("users");
newQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String fname=dataSnapshot.child("firstName").getValue().toString();
Toast.makeText(DBActivity.this, friends.firstName, Toast.LENGTH_SHORT).show();
}
}
数据快照位于users
,由于您使用的是onChildAdded
,因此您无需进行迭代即可获得名字。
答案 1 :(得分:0)
Query newQuery = database.getReference("users").orderByChild("firstName");
newQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
Friends friends = dataSnapshot1.getValue(Friends.class);
Toast.makeText(DBActivity.this, friends.firstName, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
上述答案的等效代码,不使用儿童监听器。