Проверьте, не возвращаются ли документы по классу запросов пользовательского интерфейса Firebase - PullRequest
1 голос
/ 18 мая 2019

Я использую Firebase-UI с firestore. Теперь есть вероятность, что по определенному запросу не будет возвращено никаких документов, так как я узнаю это?

  progressBar.setVisibility(View.VISIBLE);
        SharedPreferences prefs = getActivity().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        String city = prefs.getString("selectedCity", "pakistan");
        Toast.makeText(getActivity(), city, Toast.LENGTH_SHORT).show();
        Query query = db.collection("cities/"+city+"/"+category);

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



        recyclerView.setAdapter(adapter);
        progressBar.setVisibility(View.GONE);
        adapter.setOnItemClickListener(new ExploreAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
                // ExploreModel exploreModel = documentSnapshot.toObject(ExploreModel.class);
                // String id = documentSnapshot.getId();

                String path = documentSnapshot.getReference().getPath();
                Toast.makeText(getActivity(), "Position" + position + " path :" + path, Toast.LENGTH_SHORT).show();
                Intent detailActivityIntent = new Intent(getActivity(), SingleItemDetailsActivity.class);
                detailActivityIntent.putExtra("document_path", path);
                detailActivityIntent.putExtra("category",category);
                startActivity(detailActivityIntent);
            }
        });

Пустой экран отображается, если результаты / документы не возвращаются, поэтому я хочу показать правильный пустой экран и т. Д.

1 Ответ

0 голосов
/ 25 мая 2019

Вы ничего не получаете, потому что имена ваших друзей в классе модели не совпадают с именами полей в вашей базе данных. Видите mDescription против description? Оба должны быть одинаковыми.

Чтобы решить эту проблему, вы можете либо изменить класс модели так:

public class ExploreModel {
    private String title, description, imageUrl, location;

    public ExploreModel() {}

    public ExploreModel(String title, String description, String imageUrl, String location) {
        this.title = title;
        this.description = description;
        this.imageUrl = imageUrl;
        this.location = location;
    }

    public String getTitle() { return title; }
    public String getDescription() { return description; }
    public String getImageUrl() { return imageUrl; }
    public String getLocation() { return location; }
}

Или вы можете использовать аннотации:

public class ExploreModel {
    private String title, description, imageUrl, location;

    public ExploreModel() {}

    public ExploreModel(String title, String description, String imageUrl, String location) {
        this.title = title;
        this.description = description;
        this.imageUrl = imageUrl;
        this.location = location;
    }

    @PropertyName("mTitle")
    public String getTitle() { return title; }
    @PropertyName("mDescription")
    public String getDescription() { return description; }
    @PropertyName("mImageUrl")
    public String getImageUrl() { return imageUrl; }
    @PropertyName("mLocation")
    public String getLocation() { return location; }
}
...