У меня есть удаление при удалении, которое рисует фон (как и приложение Inbox), реализованное с помощью ItemTouchHelper - путем переопределения метода onChilDraw и рисования прямоугольника на предоставленном холсте:
ItemTouchHelper mIth = new ItemTouchHelper(
new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
remove(viewHolder.getAdapterPosition());
}
public boolean onMove(RecyclerView recyclerview, RecyclerView.ViewHolder v, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
View itemView = viewHolder.itemView;
Drawable d = ContextCompat.getDrawable(context, R.drawable.bg_swipe_item_right);
d.setBounds(itemView.getLeft(), itemView.getTop(), (int) dX, itemView.getBottom());
d.draw(c);
super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}
});
Выбранный выше метод удаления находится в адаптере:
public void remove(int position) {
items.remove(position);
notifyItemRemoved(position);
}
Фон отлично рисуется, но когда вызывается notifyItemRemoved (согласно Mr. Debugger), RecyclerView сначала удаляет мой довольно зеленый фон, а затем сжимает два соседних элемента вместе.
Мне бы хотелось, чтобы он сохранял фон там, пока он это делает (как и приложение Inbox). Есть ли способ сделать это?