gpt4 book ai didi

类似 Gmail 的 Android 5 RecyclerView

转载 作者:行者123 更新时间:2023-11-29 14:48:12 25 4
gpt4 key购买 nike

我在玩 RecyclerView,我发现没有太多关于如何玩它的文档

我从文档中看到 GMail 应用程序正在使用 RecyclerView,但在该应用程序中它具有许多普通 RecyclerView 不支持的功能:

里面有截图

https://developer.android.com/training/material/lists-cards.html

特点:

  1. 列表项在onTouch时高亮显示
  2. 左右滑动删除

我可以知道如何实现这些功能吗?

我发现有一个关于如何实现 OnClickListener 的讨论,(这些解决方案非常缓慢,因为它不断检查列表项区域)

RecyclerView onClick

但是,如果将它与 Gmail 应用程序进行比较,它又快又流畅!

我可以知道如何实现上述 2 个功能吗?他们是如何做到的呢?他们使用的是 Recyclerview 还是 ListView?

我确信我可以使用 ListView 实现这些功能,但我不知道如何使用 Recyclerview 实现它们。

最佳答案

可以通过这种方式向左/向右滑动: Swipe with ItemTouchHelper - jmcdale's answer

Android 支持库中开箱即用的 SwipeToDismiss。

  1. 将 'recyclerview-v7:22.2.+' 依赖添加到 build.gradle:

    编译'com.android.support:recyclerview-v7:22.2.+'

  2. 将 remove 方法添加到您的 RecyclerView.Adapter 实现中:

    public class ExampleAdapter extends Adapter<ExampleItem> {
    [...]
    public void remove(int position) {
    list.remove(position);
    notifyItemRemoved(position);
    }

    }
  3. 使用 ItemTouchHelper 和 ItemTouchHelper.Callback:

    ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {

    @Override
    public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) {
    //Remove swiped item
    adapter.remove(viewHolder.getAdapterPosition())
    }

    @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
    //Available drag and drop directions
    int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
    //Available swipe directions
    int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
    return makeMovementFlags(dragFlags, swipeFlags);
    }

    //Disable or Enable drag and drop by long press
    @Override
    public boolean isLongPressDragEnabled() {
    //return false;
    return true;
    }

    //Disable or Enable swiping
    @Override
    public boolean isItemViewSwipeEnabled() {
    //return false;
    return true;
    }

    };

    ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
  4. 将 ItemTouchHelper 附加到 RecyclerView

    itemTouchHelper.attachToRecyclerView(recyclerView);

另一个有用的链接:Drag and swipe with recyclerView

关于类似 Gmail 的 Android 5 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27855401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com