首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用支持库在android中刷卡删除cardview

如何使用支持库在android中刷卡删除cardview
EN

Stack Overflow用户
提问于 2014-10-17 18:22:38
回答 4查看 26.6K关注 0票数 13

您好,我正在使用支持库android.support.v7.widget.CardView在我的安卓应用程序中实现卡片查看功能。我想实现滑动来删除它的功能。

代码语言:javascript
复制
<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>

如何实现滑动删除中的功能呢?

提前谢谢。

EN

回答 4

Stack Overflow用户

发布于 2015-01-07 08:56:57

我对romannurik's Android-SwipeToDismiss进行了调整,以实现这一点。

The code is on github和一个工作样例应用程序,它由以下部分组成:

  • RecyclerView.OnItemTouchListener的一个子类,它侦听触摸事件并检测项目何时被滑动,并相应地对其进行动画处理。
  • SwipeListener被调用,以了解项目是否可以被取消并在项目被取消时再次调用。

要使用它,请遵循github上的说明,或者只需将类SwipeableRecyclerViewTouchListener复制到您的项目中,并像这样使用它:

代码语言:javascript
复制
@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);
}
票数 30
EN

Stack Overflow用户

发布于 2016-03-28 02:02:40

在android support v7 API中有了一种新的滑动删除手势的方法。类名称为ItemTouchHelper

Paul Burke先生写了一个关于如何实现此功能的令人惊叹的示例。请参阅此link

票数 9
EN

Stack Overflow用户

发布于 2018-06-26 10:54:18

由于这是第一个结果而添加。

我正在寻找类似这样的东西,遇到了一些问题,检查了前两个答案,但这是我发现的最容易实现的一个。只需将其放入activity中,并将itemlist/adapater/recyclerview更改为您的名称。

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26422948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档