如何从Recyclerview中删除特定项目,而不会在我的Firebase上删除

时间:2019-03-14 17:53:29

标签: android firebase-realtime-database android-recyclerview

我正在使用firebase-ui来显示firebase中的所有数据,如果满足条件,我想从recycler view中删除特定项目。这是我当前的代码:

minmax是我的List<Integer>的地方,首先我将从数据库中检索所有值,然后将其添加到我的list中,然后删除所有值{{ 1}}和条件,如果0为空,我想将其从list中删除,否则我将从recyclerview获得最小值并显示它。

它工作正常,但是没有从list中删除。请帮助!!

recyclerview

Method(removeItem)

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 result;
        }
    };


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

}

0 个答案:

没有答案