Начните прокрутку до переполнения при перетаскивании элемента recyclerview в Android - PullRequest
4 голосов
/ 25 мая 2020

Управление событиями перетаскивания с помощью ItemTouchHelper.SimpleCallback на моем RecyclerView следующим образом:

@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {

    int fromPosition = viewHolder.getAdapterPosition();
    int toPosition = target.getAdapterPosition();

    Collections.swap(adapter.getShelves(), fromPosition, toPosition);
    adapter.notifyItemMoved(fromPosition, toPosition);

    return true;
}

Перетаскивание элемента при длительном нажатии. Когда перетаскиваемый элемент выходит за пределы экрана, прокрутка начинается в своем направлении поэтапно, как обычно. Часть держателя для перетаскивания находится в верхней части элемента, поэтому при перетаскивании вниз нет никаких проблем, но перетаскивание вверх очень сложно для людей, потому что пальцы переполняют устройство. Как начать перетаскивание вверх / вниз, когда оно еще не достигнуто или до определенного края экрана?

1 Ответ

0 голосов
/ 30 мая 2020

вы можете использовать библиотеку github ссылку

добавить в зависимости:

   dependencies {
    implementation 'com.thesurix.gesturerecycler:gesture-recycler:1.11.0'
}

и kotlin:

    // Define your RecyclerView and adapter as usually
val manager = LinearLayoutManager(context)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = manager

// Extend GestureAdapter and write your own
// ViewHolder items must extend GestureViewHolder
val adapter = MonthsAdapter(R.layout.linear_item)
adapter.data = months
recyclerView.adapter = adapter

и Swipe :

 val gestureManager = GestureManager.Builder(recyclerView)
                 // Enable swipe
                .setSwipeEnabled(true)
                 // Enable long press drag and drop 
                .setLongPressDragEnabled(true)
                 // Enable manual drag from the beginning, you need to provide View inside your GestureViewHolder
                .setManualDragEnabled(true)
                 // Use custom gesture flags
                 // Do not use those methods if you want predefined flags for RecyclerView layout manager 
                .setSwipeFlags(ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT)
                .setDragFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN)
                .build()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...