Итерация FirestoreRecyclerView через данные Firestore - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь отобразить данные Firestore в моем приложении.

Я следовал учебнику на YouTube: https://www.youtube.com/watch?v=lAGI6jGS4vs&list=PLrnPJCHvNZuAXdWxOzsN5rgG2M4uJ8bH1&index=3

В этом уроке приложение тьютора показывало полные документы в порядке убывания приоритета. Я создал коллекцию с двумя документами, похожими по структуре на Firestore преподавателя. Однако мое приложение показывает только документ с последним «приоритетом», другой документ не отображается.

root
 |
 |------Beatles1(collection)
           |                     |---title : "Abbey Road"
           |--------Abbey Road---|---priority : 1969
           |                     |---description : "Crossing street"
           |
           |                      |---title : "The Beatles"
           |--------The Beatles---|---priority : 1970
                                  |---description : "White album"

А вот и мой код. OrderActicvity.java

public class OrderActivity extends AppCompatActivity {
    private CollectionReference orderRef = db.collection("Beatles1");
    private NoteAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_order);

    setUpRecyclerView();
    }

    private void setUpRecyclerView() {
        Query query = orderRef.orderBy("priority", Query.Direction.DESCENDING);

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

        adapter = new NoteAdapter(options);

        RecyclerView recyclerView = findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(adapter);
    }

    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }
}

Note.java

public class Note {
    private String title;
    private String description;
    private int priority;

    public Note()  {

    }

    public Note(String title, String description, int priority)  {
        this.title = title;
        this.description = description;
        this.priority = priority;
    }

    public String getTitle() {
        return title;
    }

    public String getDescription() {
        return description;
    }

    public int getPriority() {
        return priority;
    }
}

NoteAdapter.java

public class NoteAdapter extends FirestoreRecyclerAdapter<Note, NoteAdapter.NoteHolder> {

    public NoteAdapter(@NonNull FirestoreRecyclerOptions<Note> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull NoteHolder holder, int position, @NonNull Note model) {
        holder.textViewTitle.setText(model.getTitle());
        holder.textViewDescription.setText(model.getDescription());
        holder.textViewPriority.setText(String.valueOf(model.getPriority()));
    }

    @NonNull
    @Override
    public NoteHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.note_item,
                viewGroup, false);

        return new NoteHolder(v);
    }

    class NoteHolder extends RecyclerView.ViewHolder {
        TextView textViewTitle;
        TextView textViewDescription;
        TextView textViewPriority;

        public NoteHolder(@NonNull View itemView) {
            super(itemView);

            textViewTitle = itemView.findViewById(R.id.text_view_title);
            textViewDescription = itemView.findViewById(R.id.text_view_description);
            textViewPriority = itemView.findViewById(R.id.text_view_priority);
        }
    }
}

Мое приложение показывает только "The Beatles", а не "Abbey Road". Я не могу найти никакой разницы в коде преподавателя и моем. Что не так с моим кодом?

...