Cómo detectar si el artículo está siendo Recyclerview robó?

Deepak Gautam:

Estoy tratando de agregar funcionalidad de deslizar para eliminar, así como para mostrar la lámina inferior pop-up si el artículo RecyclerView se presiona mucho. Estoy utilizando ItemTouchHelper.SimpleCallbackpara deslizar para eliminar y ItemTouchListenerpara mostrar pop-up en pulsación larga de material. El problema es que cuando estoy swiping el elemento a borrar su pulsación larga también detectar. Lo que quiero es que se debe pasar por alto pulsación larga cuando el artículo está siendo robó. Tengo ItemTouchHelper clase que se extiende Simplecallback para deslizar para eliminar. Lo que sigue es el código para fijar recyclerview de golpe para borrar.

 ItemTouchHelper.SimpleCallback itemTouchHelperCallback = new RecyclerItemTouchHelper(0, ItemTouchHelper.LEFT, this);
    new ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerView);

Follwing es el código para agregar detector del evento click de largo.

 recyclerView.addOnItemTouchListener(new NotesRecyclerTouchListener(getApplicationContext(), recyclerView, new NotesRecyclerTouchListener.ClickListener() {
        @Override
        public void onLongClick(View view, int position) {
                Note note = notesList.get(position);
                Toast.makeText(getApplicationContext(), note.getTitle() + " is log pressed!", Toast.LENGTH_SHORT).show();
                View sheetView = MainActivity.this.getLayoutInflater().inflate(R.layout.view_bottom_sheet_dialog, null);
                BottomSheetDialog dialog = new BottomSheetDialog(MainActivity.this);
                dialog.setContentView(sheetView);
                dialog.show();
        }
    }));
Enero Stoltman:

Como se ha sugerido @DavidVelasquez debe configurar una bandera cuando empieza de golpe y actuar en función de su estado en su onLongClick()Pero onSwiped()no es el camino a seguir. En su lugar debe usar ItemTouchHelper.SimpleCallback#onChildDraw()el método para detectar cuando los seres banda magnética y onSwiped()método para detectar cuando termina.

P.ej.

override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int,isCurrentlyActive: Boolean) {
    if(actionState == ItemTouchHelper.ACTION_STATE_SWIPE){
        setupMyFlag()
    }
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
    clearMyFlag()
}

Y luego simplemente comprobar esta bandera en su onLongClick ()

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=189620&siteId=1
Recomendado
Clasificación