Загрузить результаты Geofirestore документов в RecyclerView - PullRequest
0 голосов
/ 30 мая 2019

Я использую GeoFirestore, чтобы найти ближайшее местоположение, оно работало, но мне нужно загрузить документы, которые я получил в RecyclerView, как этого достичь?

Метод GeoFirestore

   private void getNearestEstate(){

    GeoQuery geoQuery = geoFirestore.queryAtLocation(new GeoPoint(latitude, longitude), 2);
    geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
        @Override
        public void onDocumentEntered(DocumentSnapshot documentSnapshot, GeoPoint geoPoint) {

        }
}

загрузить в Rv

   private void dataFetch(Query query,int rvView){


          FirestoreRecyclerOptions<Property> options = new FirestoreRecyclerOptions.Builder<Property>()
            .setQuery(query, Property.class)
            .build();

        Toast.makeText(getContext(),options.toString(),Toast.LENGTH_LONG).show();
    mAdapter = new DiscoverAdapter(options);
    RecyclerView recyclerView = root.findViewById(rvView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.HORIZONTAL,false));
    recyclerView.setAdapter(mAdapter);
    mAdapter.startListening();
    }

1 Ответ

2 голосов
/ 30 мая 2019

Когда вы выполняете GeoQuery для базы данных Cloud Firestore и используете addGeoQueryDataEventListener(), есть несколько методов, которые должны быть реализованы.Как и в вашем примере, один из этих методов называется onDocumentEntered().Как видите, у него есть два аргумента, первый из которых имеет тип DocumentSnapshot.Этот объект содержит все объекты местоположений в вашем диапазоне.Чтобы отобразить эти местоположения, необходимо выполнить итерацию по объекту DocumentSnapshot и получить все местоположения.

Чтобы отобразить все местоположения в RecyclerView, сначала необходимо создать списокместах.Поэтому, когда вы выполняете итерацию, добавьте все объекты местоположения в список.Затем просто создайте адаптер и передайте этот список его конструктору.Установите адаптер на RecyclerView, и все готово.

Если вы думали, что можете передать GeoQuery объекту FirestoreRecyclerOptions, как вы это обычно делаете при запросе к базе данных Cloud Firestore, обратите внимание, чтоэто невозможно, поскольку класс GeoQuery не расширяет com.google.firebase.firestore.Query.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...