どのように誰もがItemTouchHelperを使用することができないことを確認するには?

アーロンDCosta:

私のアプリでは誰もが内に表示されている注意事項を追加することができますRecyclerView

私はに削除機能へのスワイプを追加したRecyclerView作成することによって、ItemTouchHelperSimpleCallbackし、それを取り付けるRecyclerViewattachToRecyclerView方法。では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);
}
アーロンDCosta:

私は最終的に経て解決策を得ることができた。このと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にもう一度心から感謝します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=21953&siteId=1