Disable multiple select on swiping

This commit is contained in:
M66B
2019-02-04 14:57:55 +00:00
parent 271d401f19
commit 62ac12268f
2 changed files with 18 additions and 2 deletions

View File

@@ -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;

View File

@@ -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);