У меня есть такая база данных с множеством событий
введите описание изображения здесь
Я хочу сопоставить дату события с текущей датой и отправил пользователю уведомление о событии. Я все понимаю с уведомлением. Может ли кто-нибудь помочь мне, как получить доступ к list.get (position) .getDate () любого события, не нажимая на элемент в представлении ресайклера.
Я пробовал это
for(int position =0;position<list.size();position++){
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
String formattedDate = df.format(c);
if (list.get(position).getDate().compareTo(formattedDate) == 0) {
final String itemId2 = list.get(position).getItemId();
final String strDate = list.get(position).getDate();
final String strPlace = list.get(position).getDate();
final String strDesc = list.get(position).getDate();
final String strName = list.get(position).getName();
EventDetails eventDetails = new EventDetails(itemId2, strName, strPlace, strDesc, strDate, "0", "0");
ref3.child(itemId2).setValue(eventDetails).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isComplete()) {
Toast.makeText(getContext(), "Event completed!", Toast.LENGTH_LONG).show();
}
}
});
ref.child(itemId2).removeValue();
Toast.makeText(getContext(), formattedDate, Toast.LENGTH_LONG).show();
}
}
Но это не сработает. Я хочу, чтобы этот код работал автоматически в дату события, а не при однократном или двойном щелчке по recyclerView. Может ли кто-нибудь помочь !!? Обратите внимание, что данные находятся в базе данных firebase.
Список является частным списком ArrayList; который содержит данные eventDetails. java, а подробности события -
public class EventDetails {
private String itemId, name, place, desc, date, alarmHour, alarmMin;
public EventDetails() {
}
public EventDetails(String itemId, String name, String place, String desc, String date, String alarmHour, String alarmMin) {
this.itemId = itemId;
this.name = name;
this.place = place;
this.desc = desc;
this.date = date;
this.alarmHour = alarmHour;
this.alarmMin = alarmMin;
}
public String getItemId() {
return itemId;
}
public void setItemId(String itemId) {
this.itemId = itemId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getAlarmHour() {
return alarmHour;
}
public void setAlarmHour(String alarmHour) {
this.alarmHour = alarmHour;
}
public String getAlarmMin() {
return alarmMin;
}
public void setAlarmMin(String alarmMin) {
this.alarmMin = alarmMin;
}
}, и вот как я добавил значения в список и показал в recyclerView
if (ref != null) {
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
list = new ArrayList<>();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
list.add(ds.getValue(EventDetails.class));
}
EventAdapter eventAdapter = new EventAdapter(list, getActivity());
recyclerView.setAdapter(eventAdapter);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
Приложение не взламывает sh, но не выполняет желаемую задачу.
Хорошо, вот как я инициализировал ref
private DatabaseReference ref;
ref = FirebaseDatabase.getInstance().getReference().child("Events/"+ + Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid())