В моем приложении каждый может добавлять заметки, которые отображаются в RecyclerView
.
Я добавил для удаления функциональность в RecyclerView
, создав ItemTouchHelper
с SimpleCallback
и прикрепив его к RecyclerView
с помощью метода attachToRecyclerView
. В обратном вызове onSwiped
я удаляю соответствующий документ из FirestoreDatabase
, вызывая delete для него DocumentReference
. Это DocumentReference
происходит от DocumentSnapshot
, вызывая getSnapshots().getSnapshot().getReference()
в адаптере и передавая ему позицию.
Моя проблема : я хочу, чтобы пользователь мог удалить только добавленную им заметку, а не любую другую заметку, добавленную другим пользователем. Что такое логика c для реализации этого?
NoteAdapter. java (класс адаптера)
public void deleteItem(int position){
getSnapshots().getSnapshot(position).getReference().delete();
}
Receive. java (mainacctivity)
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
Note note = new Note();
String cuid = FirebaseAuth.getInstance().getCurrentUser().getUid();
if (note.getUserId().equals(cuid)) {
//do nothing;
} else {
return 0;
}
return super.getMovementFlags(recyclerView, viewHolder);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
adapter.deleteItem(viewHolder.getAdapterPosition());
}
}).attachToRecyclerView(recyclerView);
}