Disable multiple select on swiping

pull/147/head
M66B 7 years ago
parent 271d401f19
commit 62ac12268f

@ -134,6 +134,7 @@ public class FragmentMessages extends FragmentBase {
private AdapterMessage adapter;
private AdapterMessage.ViewType viewType;
private SelectionPredicateMessage selectionPredicate = null;
private SelectionTracker<Long> selectionTracker = null;
private Long previous = null;
@ -424,7 +425,7 @@ public class FragmentMessages extends FragmentBase {
});
} else {
final SelectionPredicateMessage predicate = new SelectionPredicateMessage(rvMessage);
selectionPredicate = new SelectionPredicateMessage(rvMessage);
selectionTracker = new SelectionTracker.Builder<>(
"messages-selection",
@ -432,7 +433,7 @@ public class FragmentMessages extends FragmentBase {
new ItemKeyProviderMessage(rvMessage),
new ItemDetailsLookupMessage(rvMessage),
StorageStrategy.createLongStorage())
.withSelectionPredicate(predicate)
.withSelectionPredicate(selectionPredicate)
.build();
adapter.setSelectionTracker(selectionTracker);
@ -690,6 +691,9 @@ public class FragmentMessages extends FragmentBase {
AdapterMessage.ViewHolder holder = ((AdapterMessage.ViewHolder) viewHolder);
holder.setDisplacement(dX);
if (selectionPredicate != null)
selectionPredicate.setEnabled(!isCurrentlyActive);
TupleMessageEx message = getMessage(viewHolder);
if (message == null)
return;

@ -24,14 +24,23 @@ import androidx.recyclerview.selection.SelectionTracker;
import androidx.recyclerview.widget.RecyclerView;
public class SelectionPredicateMessage extends SelectionTracker.SelectionPredicate<Long> {
private boolean enabled;
private RecyclerView recyclerView;
SelectionPredicateMessage(RecyclerView recyclerView) {
this.enabled = true;
this.recyclerView = recyclerView;
}
void setEnabled(boolean enabled) {
this.enabled = enabled;
}
@Override
public boolean canSetStateForKey(@NonNull Long key, boolean nextState) {
if (!enabled)
return false;
AdapterMessage adapter = (AdapterMessage) recyclerView.getAdapter();
TupleMessageEx message = adapter.getItemForKey(key);
@ -43,6 +52,9 @@ public class SelectionPredicateMessage extends SelectionTracker.SelectionPredica
@Override
public boolean canSetStateAtPosition(int position, boolean nextState) {
if (!enabled)
return false;
AdapterMessage adapter = (AdapterMessage) recyclerView.getAdapter();
TupleMessageEx message = adapter.getItemAtPosition(position);

Loading…
Cancel
Save