如何解决如何让fire store中的Documents显示在Array Adapter中?
我正在制作一个可以在 Firestore 中插入数据的应用。每个数据都有不同的文档名称,如何获取要插入到数组适配器中的文档名称?你能给我一些例子吗?这是我的简单阵列适配器代码和我的 Fire Store 的图片。
解决方法
使用 ArrayAdapter 在 ListView 中显示地名的最简单解决方案是创建对“Marker PLaces”的引用:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference placesRef = rootRef.collection("Marker PLaces");
假设您的 .XML 文件中已经有一个“ListView”,如下所示:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/place_list"/>
创建一个地方类:
class Place() {
private String latitude,longitude,placeName;
private Date timestamp;
public Place() {}
public Place(String latitude,String longitude,String placeName) {
this.latitude = latitude;
this.longitude = longitude;
this.placeName = placeName
}
public String getLatitude() {
return latitude;
}
public String getLongitude() {
return longitude;
}
public String getPlaceName() {
return placeName;
}
}
然后定义适配器类:
public class PlacesAdapter extends ArrayAdapter<Place> {
public PlacesAdapter(Context context,List<Place> list) {
super(context,list);
}
@NonNull
@Override
public View getView(int position,View listItemView,@NonNull ViewGroup parent) {
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1,parent,false);
}
Place place = getItem(position);
String placeName = place.getPlaceName();
((TextView) listItemView).setText(placeName);
return listItemView;
}
}
然后在您的 onCreate()
方法中使用以下代码:
List<Place> placeList = new ArrayList<>();
ListView mListView = (ListView) findViewById(R.id.place_list);
PlacesAdapter placesAdapter = new PlacesAdapter(getApplicationContext(),placeList);
mListView.setAdapter(placesAdapter);
然后立即获取数据并将更改通知适配器:
placesRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
Place place = document.toObject(Place.class);
placeList.add(place);
}
placesAdapter.notifyDataSetChanged();
}
}
});
此代码的结果将是充满地名的 ListView。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。