gpt4 book ai didi

android - 从 Firebase 数据库填充 ListView

转载 作者:行者123 更新时间:2023-11-29 15:40:23 26 4
gpt4 key购买 nike

我有一个从 Firebase 数据库填充的 ListView:

这是我的代码:

final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(".../comunidades");

FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(
this.getActivity(),
String.class,
android.R.layout.simple_list_item_1,
databaseReference
) {
@Override
protected void populateView(View v, String model, int position) {
TextView textView = (TextView) v.findViewById(android.R.id.text1);
textView.setText(model);
mProgress.dismiss();

}
};

这是这个数据库的 Firebase 控制台,分支:“comunidades”:

enter image description here

但我在另一个 fragment 中使用相同的代码,用来自同一数据库的另一个分支的对象填充 ListView ,但我收到错误。

这是新代码:

final DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReferenceFromUrl(".../Enclaves");

FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(
this.getActivity(),
String.class,
android.R.layout.simple_list_item_1,
databaseReference
) {
@Override
protected void populateView(View v, String model, int position) {
TextView textView = (TextView) v.findViewById(android.R.id.text1);
textView.setText(model);


}
};

我应该更改什么才能从分支“Enclaves”获​​取键“Nombre_enclave”的值:

enter image description here

最佳答案

enclaves 下的内容不是 String+String 对的列表。相反,它是一个 String+Object 对列表,每个对象都有一个 Comunidad_enclave、Descripcion_enclave 等。

完成这项工作的最快方法是决定要显示的属性,然后覆盖 parseSnapshot():

FirebaseListAdapter<String> firebaseListAdapter = new FirebaseListAdapter<String>(
this.getActivity(),
String.class,
android.R.layout.simple_list_item_1,
databaseReference
) {
@Override
protected String parseSnapshot(DataSnapshot snapshot) {
return snapshot.child("Comunidad_enclave").getValue(String.class);
}

@Override
protected void populateView(View v, String model, int position) {
TextView textView = (TextView) v.findViewById(android.R.id.text1);
textView.setText(model);
}
};

解决这个问题的更好方法是创建一个代表每个社区的类。最简单的形式可能如下所示:

class Comunidad {
public String Comunidad_enclave;
public String Descripcion__enclave;
// TODO: the same for the other properties
}

使用这个类,您可以制作类型为 Comunidad 的适配器:

FirebaseListAdapter<Comunidad> firebaseListAdapter = new FirebaseListAdapter<Comunidad>(
this.getActivity(),
String.class,
android.R.layout.simple_list_item_2,
databaseReference
) {
@Override
protected void populateView(View v, Comunidad model, int position) {
TextView textView1 = (TextView) v.findViewById(android.R.id.text1);
textView1.setText(model.Comunidad_enclave);
TextView textView2 = (TextView) v.findViewById(android.R.id.text2);
textView2.setText(model.Descripcion_enclave);
}
};

关于android - 从 Firebase 数据库填充 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41389814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com