私のアプリでは誰もが内に表示されている注意事項を追加することができますRecyclerView
。
私はに削除機能へのスワイプを追加したRecyclerView
作成することによって、ItemTouchHelper
とSimpleCallback
し、それを取り付けるRecyclerView
とattachToRecyclerView
方法。ではonSwiped
、コールバック、私はから対応する文書を削除していますFirestoreDatabase
、それの上で削除を呼び出すことによって、DocumentReference
。これはDocumentReference
から来てDocumentSnapshot
呼び出すことによって、getSnapshots().getSnapshot().getReference()
アダプタで、そこに位置を通過します。
私の問題は:私は、ユーザーが唯一の彼はいくつかの他のユーザーによって追加されたその他の注記を追加していないことノートを削除できるようにしたいです。これを実装するためのロジックとは何ですか?
NoteAdapter.java(adapterclass)
public void deleteItem(int position){
getSnapshots().getSnapshot(position).getReference().delete();
}
Receive.java (mainactivity)
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);
}
私は最終的に経て解決策を得ることができた。このとtheThapaが提供する答えの助けを借りて。
彼の答えはkotlinにあったと私はJavaで私のアプリを開発しています、私は私の周りにプレイしていたのでgetMovementFlag()
、それ彼が提供したものと類似したものにするために、内部に以下の変更を行いますItemTouchHelper.SimpleCallback
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
if (adapter.getSnapshots().get(viewHolder.getAdapterPosition()).getUserId().equals(FirebaseAuth.getInstance().getCurrentUser().getUid())) {
//do nothing;
}
else {
return 0;
}
return super.getMovementFlags(recyclerView, viewHolder);
}
これで私を助けるためtheThapaにもう一度心から感謝します。