Ich habe ein Entfernen auf Swipe, bekommt, das einen Hintergrund zieht (ähnlich wie die Inbox App), die von einer ItemTouchHelper implementiert - von der onChilDraw Methode überschreibt und ein Rechteck auf der bereitgestellten Leinwand Zeichnung:RecyclerView ItemTouchHelper Swipe entfernen Animation
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);
}
});
die Methode remove oben im Adapter genannt ist:
public void remove(int position) {
items.remove(position);
notifyItemRemoved(position);
}
der Hintergrund schön zieht, aber wenn notifyItemRemoved (nach Mr. Debugger) aufgerufen wird, löscht das RecyclerView zuerst meinen schönen grünen Hintergrund, und schiebt dann die beiden ein angrenzende Gegenstände zusammen.
ich mag es dort um den Hintergrund zu halten, während sie das tut (wie die Inbox App). Gibt es eine Möglichkeit, das zu tun?