#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