Java 我无法让firebase在我的android应用程序的每个cardview上显示每个数据,但它在每个cardview上显示相同的数据
这是我所做的代码,但它只会一次又一次地显示来自firebase数据库的相同数据。在cardview上,显示数据中的最后一个键值对 这是主要问题Java 我无法让firebase在我的android应用程序的每个cardview上显示每个数据,但它在每个cardview上显示相同的数据,java,android,database,firebase-realtime-database,Java,Android,Database,Firebase Realtime Database,这是我所做的代码,但它只会一次又一次地显示来自firebase数据库的相同数据。在cardview上,显示数据中的最后一个键值对 这是主要问题 myRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { Textobj textobj = null;
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Textobj textobj = null;
for (DataSnapshot data : dataSnapshot.getChildren()) {
textobj = new Textobj(data.getKey().toString(), data.getValue().toString());
arrayList.add(position,textobj);
}
textView.setText(arrayList.get(position).getMtext().toString());
textView1.setText(arrayList.get(position).getMtext2().toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w((String) TAG, "Failed to read value.",databaseError.toException());
}
});
}
@Override
public int getItemCount() {
int size = value2.length;
return size;
}
}
要获取数据,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference foodRef = rootRef.child("food");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
String value = ds.getValue(String.class);
Log.d("TAG", key + " / " + value);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
foodRef.addListenerForSingleValueEvent(eventListener);
您的输出将是:
Ktm / American made super bike...
Pulse / this is the indian made...
Yamaha / japan made super bike...
问题解决了,我将得到的值添加到Textobj类中,并将其添加到arraylist中,结果正确 代码如下所示
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
String key = data.getKey();
String value = data.getValue(String.class);
Textobj textobj = new Textobj(key,value);
arrayList1.add(textobj);
textView.setText(arrayList1.get(position).getMtext());
textView1.setText(arrayList1.get(position).getMtext2());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w((String) TAG, "Failed to read value.", databaseError.toException());
}
};
myRef.addListenerForSingleValueEvent(valueEventListener);
}
请添加您的数据库结构,并指出您希望获得的确切数据。我已添加了上面的链接我已添加了上面的数据结构链接现在它只显示每个cardview yamaha上的最后一个键和值以及每个Card上的值您的logcat中的输出是什么?现在我可以从我的数据库中获取每个cardview上的每个值