Fix: accessibility actions move languages but don't update
Also added a comment in onItemMove explaining why that method does not call doTheUpdate(). Bug: 28173358 Change-Id: Ifdc00e70346149aeb09bd95ec21c7df2ccbaa996
This commit is contained in:
@@ -197,6 +197,8 @@ class LocaleDragAndDropAdapter
|
|||||||
notifyItemChanged(fromPosition); // to update the numbers
|
notifyItemChanged(fromPosition); // to update the numbers
|
||||||
notifyItemChanged(toPosition);
|
notifyItemChanged(toPosition);
|
||||||
notifyItemMoved(fromPosition, toPosition);
|
notifyItemMoved(fromPosition, toPosition);
|
||||||
|
// We don't call doTheUpdate() here because this method is called for each item swap.
|
||||||
|
// So if we drag something across several positions it will be called several times.
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRemoveMode(boolean removeMode) {
|
void setRemoveMode(boolean removeMode) {
|
||||||
@@ -222,7 +224,6 @@ class LocaleDragAndDropAdapter
|
|||||||
}
|
}
|
||||||
mFeedItemList.remove(position);
|
mFeedItemList.remove(position);
|
||||||
notifyDataSetChanged();
|
notifyDataSetChanged();
|
||||||
doTheUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeChecked() {
|
void removeChecked() {
|
||||||
|
@@ -114,40 +114,46 @@ public class LocaleLinearLayoutManager extends LinearLayoutManager {
|
|||||||
|
|
||||||
final int itemCount = this.getItemCount();
|
final int itemCount = this.getItemCount();
|
||||||
final int position = this.getPosition(host);
|
final int position = this.getPosition(host);
|
||||||
|
boolean result = false;
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case R.id.action_drag_move_up:
|
case R.id.action_drag_move_up:
|
||||||
if (position > 0) {
|
if (position > 0) {
|
||||||
mAdapter.onItemMove(position, position - 1);
|
mAdapter.onItemMove(position, position - 1);
|
||||||
return true;
|
result = true;
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
case R.id.action_drag_move_down:
|
case R.id.action_drag_move_down:
|
||||||
if (position + 1 < itemCount) {
|
if (position + 1 < itemCount) {
|
||||||
mAdapter.onItemMove(position, position + 1);
|
mAdapter.onItemMove(position, position + 1);
|
||||||
return true;
|
result = true;
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
case R.id.action_drag_move_top:
|
case R.id.action_drag_move_top:
|
||||||
if (position != 0) {
|
if (position != 0) {
|
||||||
mAdapter.onItemMove(position, 0);
|
mAdapter.onItemMove(position, 0);
|
||||||
return true;
|
result = true;
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
case R.id.action_drag_move_bottom:
|
case R.id.action_drag_move_bottom:
|
||||||
if (position != itemCount - 1) {
|
if (position != itemCount - 1) {
|
||||||
mAdapter.onItemMove(position, itemCount - 1);
|
mAdapter.onItemMove(position, itemCount - 1);
|
||||||
return true;
|
result = true;
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
case R.id.action_drag_remove:
|
case R.id.action_drag_remove:
|
||||||
if (itemCount > 1) {
|
if (itemCount > 1) {
|
||||||
mAdapter.removeItem(position);
|
mAdapter.removeItem(position);
|
||||||
return true;
|
result = true;
|
||||||
}
|
}
|
||||||
return false;
|
break;
|
||||||
default:
|
default:
|
||||||
return super.performAccessibilityActionForItem(recycler, state, host, action, args);
|
return super.performAccessibilityActionForItem(recycler, state, host, action, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
mAdapter.doTheUpdate();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user