我正在制作一个可以在firestore中插入数据的应用程序。每个数据都有不同的文档名,如何将文档名插入到数组适配器中?你能给我举几个例子吗?这是我的简单阵列适配器代码和fire存储的图片。
wswtfjt71#
使用arrayadapter在listview中显示地名的最简单解决方案是创建对“标记位置”的引用:
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"/>
创建一个place类:
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, 0, 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() 方法使用以下代码:
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中充满地名。
1条答案
按热度按时间wswtfjt71#
使用arrayadapter在listview中显示地名的最简单解决方案是创建对“标记位置”的引用:
假设您的.xml文件中已经有一个如下所示的“listview”:
创建一个place类:
然后定义适配器类:
然后在你的
onCreate()
方法使用以下代码:然后立即获取数据并将更改通知适配器:
此代码的结果将是listview中充满地名。