将Android Firebase中的所有子项检索到RecyclerView中
有人能帮我处理这段代码吗?问题是我只收到数据库中的最后一项将Android Firebase中的所有子项检索到RecyclerView中,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,有人能帮我处理这段代码吗?问题是我只收到数据库中的最后一项 FirebaseDatabase.getInstance().setPersistenceEnabled(true); DatabaseReference database = FirebaseDatabase.getInstance().getReference(); database.child("Ministries").addValueEventListener(new ValueEventListene
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
DatabaseReference database = FirebaseDatabase.getInstance().getReference();
database.child("Ministries").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot child : dataSnapshot.getChildren()) {
String min = child.child("Ministry").getValue().toString();
min_address = child.child("Address").getValue().toString();
min_tel = child.child("Tel").getValue().toString();
min_fax = child.child("Fax").getValue().toString();
min_email = child.child("e_mail").getValue().toString();
min_website = child.child("website").getValue().toString();
final RecyclerView rv = (RecyclerView) findViewById(id.recycler_view);
rv.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext());
rv.setLayoutManager(llm);
List<Ministries> m = new ArrayList<>();
m.add(new Ministries(min, min_address, min_tel, min_fax, min_email, min_website, R.drawable.ic_ministries));
RVAdapter adapter = new RVAdapter(m);
rv.setAdapter(adapter);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
DatabaseReference database=FirebaseDatabase.getInstance().getReference();
database.child(“部委”).addValueEventListener(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot子项:DataSnapshot.getChildren()){
字符串min=child.child(“部”).getValue().toString();
min_address=child.child(“地址”).getValue().toString();
min_tel=child.child(“tel”).getValue().toString();
min_fax=child.child(“fax”).getValue().toString();
min_email=child.child(“电子邮件”).getValue().toString();
min_website=child.child(“网站”).getValue().toString();
最终RecyclerView rv=(RecyclerView)findViewById(id.recycler\u视图);
rv.setHasFixedSize(真);
LinearLayoutManager llm=新的LinearLayoutManager(getApplicationContext());
rv.setLayoutManager(llm);
列表m=新的ArrayList();
m、 添加(新部委(min、min_地址、min_电话、min_传真、min_电子邮件、min_网站、R.drawable.ic_部委));
RVAdapter适配器=新的RVAdapter(m);
rv.设置适配器(适配器);
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){}
});
您需要将列表创建和RecyclerView
逻辑移到for循环之外
例如:
public void onDataChange(DataSnapshot dataSnapshot) {
List<Ministries> m = new ArrayList<>();
for(DataSnapshot child : dataSnapshot.getChildren()) {
String min = child.child("Ministry").getValue().toString();
min_address = child.child("Address").getValue().toString();
min_tel = child.child("Tel").getValue().toString();
min_fax = child.child("Fax").getValue().toString();
min_email = child.child("e_mail").getValue().toString();
min_website = child.child("website").getValue().toString();
m.add(new Ministries(min, min_address, min_tel, min_fax, min_email, min_website, R.drawable.ic_ministries));
}
final RecyclerView rv = (RecyclerView) findViewById(id.recycler_view);
rv.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(getApplicationContext());
rv.setLayoutManager(llm);
RVAdapter adapter = new RVAdapter(m);
rv.setAdapter(adapter);
}
public void onDataChange(DataSnapshot DataSnapshot){
列表m=新的ArrayList();
对于(DataSnapshot子项:DataSnapshot.getChildren()){
字符串min=child.child(“部”).getValue().toString();
min_address=child.child(“地址”).getValue().toString();
min_tel=child.child(“tel”).getValue().toString();
min_fax=child.child(“fax”).getValue().toString();
min_email=child.child(“电子邮件”).getValue().toString();
min_website=child.child(“网站”).getValue().toString();
m、 添加(新部委(min、min_地址、min_电话、min_传真、min_电子邮件、min_网站、R.drawable.ic_部委));
}
最终RecyclerView rv=(RecyclerView)findViewById(id.recycler\u视图);
rv.setHasFixedSize(真);
LinearLayoutManager llm=新的LinearLayoutManager(getApplicationContext());
rv.setLayoutManager(llm);
RVAdapter适配器=新的RVAdapter(m);
rv.设置适配器(适配器);
}
我没有使用ValueEventListeners,但是ChildEventListener在这里可能更合适。如何为循环中的每个信息实现clicklistener。。。示例“min_tel”按钮指向确切的电话号码。。。我当前的尝试也只提供Firebase数据库中的最后一个数据