Заполнение firebaseRecyclerAdapter с помощью Query - PullRequest
0 голосов
/ 14 февраля 2019

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

JSON Database structure

Приведенный ниже код показывает, как я использую FirebaseRecyclerAdapter.Прежде всего, запрос работает как задумано, он возвращает один объект.Мой вопрос заключается в том, как реализовать это таким образом, чтобы показать не только один любимый элемент, но и все их.(Элементы находятся в разных категориях). Например, что-то вроде этого, который отправит новый запрос и добавит новый элемент в адаптер:

for(int i=0; i<itemList.size(); i++) {
    Query listRef = FirebaseDatabase.getInstance().getReference("Items").child("Category").child(itemList.get(i)).orderByChild("id").equalTo(itemList.get(i++)).limitToFirst(10);
   //rest of the code
}
   private void showData(){
/*
itemList is an array that has on:
index 0 category
index 1 item_id
index 2 category
index 3 item_id
and so on from Users/Likes
*/
            Query listRef = FirebaseDatabase.getInstance().getReference("Items").child("Category").child(itemList.get(0)).orderByChild("id").equalTo(itemList.get(1)).limitToFirst(10);
            options = new FirebaseRecyclerOptions.Builder<Model>().setQuery(listRef,Model.class).build();
            firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Model, ViewHolder>(options) {
                @Override
                protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Model model) {
                    holder.setDetails(getApplicationContext(), model.getTitle(), model.getDescription(), model.getImage(), model.getRating(), model.getViews(), model.getId(), model.getLikes());
                }

                @NonNull
                @Override
                public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
                    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);
                    ViewHolder viewHolder = new ViewHolder(itemView);
                    viewHolder.setOnClickListener(new ViewHolder.ClickListener() {
                        @Override
                        public void onItemClick(View view, int position) {
                            //get Data from firebase at the position clicked
                            String mTitle = getItem(position).getTitle();
                            String mDesc = getItem(position).getDescription();
                            String mImage = getItem(position).getImage();
                            String mRating = getItem(position).getRating();
                            String mViews = getItem(position).getViews();
                            String mItem_id = getItem(position).getId();
                            String mLikes = getItem(position).getLikes();
                        }

                        @Override
                        public void onItemLongClick(View view, int position) {

                        }
                    });
                    return viewHolder;
                }
            };
            mRecyclerView.setLayoutManager(mLayoutManager);
            firebaseRecyclerAdapter.startListening();
            //set adapter to firebase recycler view
            mRecyclerView.setAdapter(firebaseRecyclerAdapter);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...