我改编了romannurik's Android-SwipeToDismiss来做到这一点。
The code is on github与沃示例应用程序,和由以下组成:
- 的
RecyclerView.OnItemTouchListener
子类侦听触摸事件并检测当一个项目被偷走,因此动画它。
- A
SwipeListener
这是调用,以便知道是否可以消除一个项目,并在项目被解雇时再次调用。
要使用它,请在GitHub上的说明,或者只是类SwipeableRecyclerViewTouchListener
复制到您的项目,这样使用它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mItems = new ArrayList<>(30);
for (int i = 0; i < 30; i++) {
mItems.add(String.format("Card number %2d", i));
}
mAdapter = new CardViewAdapter(mItems);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mAdapter);
SwipeableRecyclerViewTouchListener swipeTouchListener =
new SwipeableRecyclerViewTouchListener(mRecyclerView,
new SwipeableRecyclerViewTouchListener.SwipeListener() {
@Override
public boolean canSwipe(int position) {
return true;
}
@Override
public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
mItems.remove(position);
mAdapter.notifyItemRemoved(position);
}
mAdapter.notifyDataSetChanged();
}
@Override
public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
mItems.remove(position);
mAdapter.notifyItemRemoved(position);
}
mAdapter.notifyDataSetChanged();
}
});
mRecyclerView.addOnItemTouchListener(swipeTouchListener);
}
https://github.com/gabrielemariotti/cardslib,请检查此库。它使用了一个onSwipeDismissListener,它可能有帮助。 – AmaJayJB 2014-10-17 11:12:47
@AmaJayJB true - 但这是minSDK 14 - 支持更低.. – ligi 2014-10-17 11:18:33
@AmaJayJB我没有使用该库。我正在使用cardview概念,谷歌推出支持库 – 2014-10-17 13:18:49