mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-04-26 16:56:09 +00:00
Fix a crash caused by ViewHolder.getAdapterPosition returning -1
This commit is contained in:
parent
e77df1eee4
commit
715c5112ab
1 changed files with 19 additions and 12 deletions
|
@ -1,10 +1,13 @@
|
||||||
package com.beemdevelopment.aegis.helpers;
|
package com.beemdevelopment.aegis.helpers;
|
||||||
|
|
||||||
|
import static androidx.recyclerview.widget.RecyclerView.NO_POSITION;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import com.beemdevelopment.aegis.vault.VaultEntry;
|
|
||||||
import com.beemdevelopment.aegis.ui.views.EntryAdapter;
|
import com.beemdevelopment.aegis.ui.views.EntryAdapter;
|
||||||
|
import com.beemdevelopment.aegis.vault.VaultEntry;
|
||||||
|
|
||||||
public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
||||||
|
|
||||||
|
@ -44,19 +47,23 @@ public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
|
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
|
||||||
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
|
// It's not clear when this can happen, but sometimes the ViewHolder
|
||||||
int swipeFlags = 0;
|
// that's passed to this function has a position of -1, leading
|
||||||
|
// to a crash down the line.
|
||||||
|
int position = viewHolder.getAdapterPosition();
|
||||||
|
if (position == NO_POSITION) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (viewHolder != null) {
|
int swipeFlags = 0;
|
||||||
int position = viewHolder.getAdapterPosition();
|
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
|
||||||
EntryAdapter adapter = (EntryAdapter)recyclerView.getAdapter();
|
|
||||||
if (adapter.isPositionFooter(position)
|
EntryAdapter adapter = (EntryAdapter) recyclerView.getAdapter();
|
||||||
|
if (adapter.isPositionFooter(position)
|
||||||
|| adapter.getEntryAt(position) != _selectedEntry
|
|| adapter.getEntryAt(position) != _selectedEntry
|
||||||
|| !isLongPressDragEnabled())
|
|| !isLongPressDragEnabled()) {
|
||||||
{
|
dragFlags = 0;
|
||||||
dragFlags = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return makeMovementFlags(dragFlags, swipeFlags);
|
return makeMovementFlags(dragFlags, swipeFlags);
|
||||||
|
|
Loading…
Add table
Reference in a new issue