Tôi đã xóa hình nền, vẽ nền (giống như ứng dụng Inbox), được thực hiện bởi ItemTouchHelper - bằng cách ghi đè phương thức onChilDraw và vẽ hình chữ nhật trên canvas được cung cấp:RecyclerView ItemTouchHelper swipe xóa hoạt ảnh
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);
}
});
phương thức remove gọi trên là trong Adaptor:
public void remove(int position) {
items.remove(position);
notifyItemRemoved(position);
}
nền rút ra độc đáo, nhưng khi notifyItemRemoved được gọi là (theo ông Debugger), các RecyclerView đầu tiên xóa nền màu xanh lá cây khá của tôi, và sau đó đẩy hai các mục với nhau.
Tôi muốn thắng để giữ nền có khi nó làm điều đó (giống như các ứng dụng Inbox). Có cách nào để làm điều đó?