我正在为安卓开发一个社交应用 我正在尝试从 firebase 检索数据并显示(至少 15 项) 问题是我的代码只显示第一项 这是我的代码
FirebaseHelper
public class FirebaseHelper {
DatabaseReference db;
ArrayList<Questions> questionEntries =new ArrayList<>();
public FirebaseHelper(DatabaseReference db) {
this.db=db;
}
private void fetchData (DataSnapshot dataSnapshot){
questionEntries.clear();
Questions questions = dataSnapshot.getValue(Questions.class);
questionEntries.add(questions);}
public ArrayList<Questions> retreive (){
db.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
fetchData(dataSnapshot);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return questionEntries;
}
这是显示列表的我的 Activity
public class Actu extends Fragment {
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.activity_actu, container, false);
lv = (ListView) v.findViewById(R.id.actu_rv);
db = FirebaseDatabase.getInstance().getReference("Questions");
helper = new FirebaseHelper(db);
adapter = new QuestionAdapter(getContext(),helper.retreive());
lv.setAdapter(adapter);
return v; }
}
最佳答案
以下是您可以执行的操作:
public ArrayList<Questions> retreive (){
db.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Questions questions = dataSnapshot.getValue(Questions.class);
questionEntries.add(questions);
}
@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) {
在 onChildAdded()
方法中,您可以检索 child 的数据。
在数据库中你有 Question-KxOmo9FQ7QZMtq2wUIT
,从那里删除 Question
并只保留 id
那里,这就像 sql 数据库中的 id
主键,所以你不需要在这里 Question
..
所以移除fetchdata()
方法。
关于java - 如何使用多个 firebase 项目填充 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46998171/