[英]How to swipe to delete a Card (using appcompat v7's CardView)
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:stateListAnimator="@anim/anim"
android:layout_margin="5dp"
android:clickable="true"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/textview"
android:minHeight="?android:listPreferredItemHeight"
android:gravity="center_vertical">
</TextView>
</android.support.v7.widget.CardView>
我正在使用CardView顯示一行文本。 如何滑動以刪除那些行 - 哪些是cardviews? 另外,如何為每一行設置onItemClickListener? 我再次使用cardview來顯示每一行。
我想做類似的事情,所以我調整了romannurik的Android-SwipeToDismiss來完成我們想要的。
代碼在github上,帶有一個工作示例應用程序,包括:
RecyclerView.OnItemTouchListener
的子類,用於偵聽觸摸事件並檢測項目何時被刷過,並相應地設置動畫。 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);
}
以下是Roman Nurik着名的Swipe to Dismiss示例。
https://github.com/romannurik/Android-SwipeToDismiss
它包括解雇列表中的項目並解除單獨的View
。 它應該適用於包括CardView
在內的任何View
。
SwipeDismissListViewTouchListener
用於在ListView
使用滑動項目。 SwipeDismissTouchListener
適用於任何View
完全關閉整個View
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.