我改編了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