Как я могу удалить из recyclerview определенный элемент и не буду удалять в своей firebase

#android #firebase-realtime-database #android-recyclerview

#Android #firebase-realtime-database #android-recyclerview

Вопрос:

Я использую firebase-ui для отображения всех данных из firebase, и я хочу удалить определенный элемент из recycler view , если условие выполнено. Вот мой текущий код:

Где minmax находится my List<Integer> сначала я извлеку все значения из своей базы данных, затем добавлю его в свою list и удалю все значения 0 и условие, если list значение пустое, я хочу удалить его из recyclerview , иначе я получу минимальное значение из list и отобразлю его.

Он работает должным образом, но он не удален из recyclerview . Помогите, пожалуйста!!

 mAdapter = new FirebaseRecyclerAdapter<Adapter_Hotels, Adapter_HotelsHolder>(mOptions) {
        @Override
        protected void onBindViewHolder(@NonNull final Adapter_HotelsHolder holder, final int position, @NonNull Adapter_Hotels model) {

           /* String status = model.getStatus();
            if (status.equals("unlive")) {
                holder.itemView.setVisibility(View.GONE);
                param.height = 0;
                param.width = 0;
            }else{
                holder.itemView.setVisibility(View.VISIBLE);
            }*/
            Picasso.get().load(model.getUrl_path()).fit().into(holder.hImage);
            holder.hName.setText(model.getTitle());
            holder.hAddress.setText(model.getProvince()   ", "  
                    model.getCountry());


            SimpleDateFormat date = new SimpleDateFormat("yyyy-MM");
            SimpleDateFormat sf = new SimpleDateFormat("EEE, dd MMM yy");

            final ArrayList<Date> dates = new ArrayList<>();

            final SimpleDateFormat day = new SimpleDateFormat("dd");
            final Calendar calendar = Calendar.getInstance();
            final Calendar calendar3 = Calendar.getInstance();

            String checki = mPreference.getString(getString(R.string.check_in), "");
            String checko = mPreference.getString(getString(R.string.check_out), "");

            Date calendar1 = new Date();
            Date calendar2 = new Date();


            try {
                calendar1 = sf.parse(checki);
                calendar2 = sf.parse(checko);
            } catch (ParseException e) {
                e.printStackTrace();
            }

            String i2 = day.format(calendar1);
            String i3 = day.format(calendar2);

            final String ym = date.format(calendar1);
            final String ym1 = date.format(calendar2);

            final int ch = Integer.parseInt(i2) - 1;

            calendar.setTime(calendar1);
            calendar3.setTime(calendar2);
            int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            final ArrayList<String> allDays = new ArrayList<>();

            for (int i = 0; i < daysInMonth; i  ) {
                allDays.add(i, String.valueOf(i));

            }


            long interval = 24 * 1000 * 60 * 60;
            long checkinTime = calendar1.getTime();
            long checkoutTime = calendar2.getTime();

            while (checkinTime <= checkoutTime) {
                dates.add(new Date(checkinTime));
                checkinTime  = interval;
            }

            final int co = ch   dates.size();

            final int norooms = mPreference.getInt(getString(R.string.room), 1);
            int noadult = mPreference.getInt(getString(R.string.adult), 1);
            int nokid = mPreference.getInt(getString(R.string.kid), 0);
            int totalguest = noadult   nokid;
            guest = null;

            if (totalguest == 1) {
                guest = "guest1";
            } else if (totalguest == 2) {
                guest = "guest2";
            } else if (totalguest == 3) {
                guest = "guest3";
            } else if (totalguest == 4) {
                guest = "guest4";
            }


            String key = getRef(position).getKey();

            mRef1 = mRef.child(key).child("rooms");
            mRef1.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    for (DataSnapshot roomSnapshot : dataSnapshot.getChildren()) {
                        DataSnapshot priceSnapshot = roomSnapshot.child("promos");
                        for(DataSnapshot promosSnapshot : priceSnapshot.getChildren()){
                            Query query = promosSnapshot.getRef().orderByKey().startAt(ym).endAt(ym1);
                            query.addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot1) {
                                    for (DataSnapshot allpriceSnapshot1 : dataSnapshot1.getChildren()) {
                                        DataSnapshot allPriceSnapshot = allpriceSnapshot1.child("price").child(guest);
                                        minmax.clear();
                                        for (DataSnapshot price : allPriceSnapshot.getChildren()) {
                                            final RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) holder.itemView.getLayoutParams();
                                            int pi = price.getValue(Integer.class);
                                            minmax.addAll(Collections.singleton(pi));
                                            minmax.removeAll(Collections.singletonList(0));
                                            if (minmax.isEmpty()) {
                                               removeItem(holder.getAdapterPosition());

                                            } else {
                                                int min = Collections.min(minmax);
                                                holder.hPrice.setText("Start From "   String.valueOf(min));
                                            }
                                            dialog.dismiss();
                                            getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

                                        }


                                    }

                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {
                                    throw databaseError.toException();
                                }
                            });
                        }


                    }



                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    throw databaseError.toException();
                }
            });


        }

        @NonNull
        @Override
        public Adapter_HotelsHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listview_layout, parent, false);
            Adapter_HotelsHolder result = new Adapter_HotelsHolder(view);
            result.setOnClickListener(new Adapter_HotelsHolder.ClickListener() {
                @Override
                public void onItemClick(View view, int position) {

                    keyId = getRef(position).getKey();
                    mEditor.putString(getString(R.string.hotel), keyId);
                    mEditor.apply();

                    Intent intent = new Intent(getContext(), Hotel_List2.class);
                    startActivity(intent);

                }

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

                }
            });
            return resu<
        }
    };


    mAdapter.startListening();
    mListview.setAdapter(mAdapter);
    return view;

}
  

Метод (removeItem)

 public void removeItem(int position){
        mAdapter.notifyItemRemoved(position);
        mAdapter.notifyDataSetChanged();
    }
  

Комментарии:

1. поделитесь своим кодом адаптера. вы должны удалить элемент из коллекции, которая поддерживает ваш адаптер.

2. @takecare это мой код адаптера, который находится внутри этого mAdapter = new FirebaseRecyclerAdapter<Adapter_Hotels, Adapter_HotelsHolder>(mOptions) { @Override protected void onBindViewHolder(@NonNull final Adapter_HotelsHolder holder, final int position, @NonNull Adapter_Hotels model) { //body }

3. отредактируйте свой вопрос и добавьте соответствующий код

4. @takecare Я добавляю все свои коды. Вот почему я не добавляю все это, потому что их слишком много и они слишком сложные

5. @takecare если вы можете понять, пожалуйста, помогите начать чтение с mRef1