您好,我正在使用支持库android.support.v7.widget.CardView在我的安卓应用程序中实现卡片查看功能。我想实现滑动来删除它的功能。
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="200dp"
android:layout_height="200dp"
card_view:cardCornerRadius="4dp">
<TextView
android:id="@+id/info_text"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v7.widget.CardView>如何实现滑动删除中的功能呢?
提前谢谢。
发布于 2015-01-07 08:56:57
我对romannurik's Android-SwipeToDismiss进行了调整,以实现这一点。
The code is on 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);
}发布于 2016-03-28 02:02:40
在android support v7 API中有了一种新的滑动删除手势的方法。类名称为ItemTouchHelper。
Paul Burke先生写了一个关于如何实现此功能的令人惊叹的示例。请参阅此link。
发布于 2018-06-26 10:54:18
由于这是第一个结果而添加。
我正在寻找类似这样的东西,遇到了一些问题,检查了前两个答案,但这是我发现的最容易实现的一个。只需将其放入activity中,并将itemlist/adapater/recyclerview更改为您的名称。
ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new
ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
ItemList.remove(viewHolder.getAdapterPosition());
Adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
}
@Override
public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int fromPos, RecyclerView.ViewHolder target, int toPos, int x, int y) {
super.onMoved(recyclerView, viewHolder, fromPos, target, toPos, x, y);
}
};
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
itemTouchHelper.attachToRecyclerView(RecyclerViewer);点击此处:codeproject
https://stackoverflow.com/questions/26422948
复制相似问题