当前位置: 首页 > 知识库问答 >
问题:

Androidx在回收器视图中滑动以显示删除图标,并进一步滑动以删除

南门宇
2023-03-14

我在回收器视图中实现了向左滑动以删除操作,如下所示:

public class SwipeToDelete extends ItemTouchHelper.SimpleCallback {

    //my custom adapter
    private MyAdapter slAdapter;

    public SwipeToDelete(MyAdapter adapter){
       // TO only swipe to the left
        super(0, ItemTouchHelper.LEFT);
        slAdapter = adapter;
    }

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        int position = viewHolder.getAdapterPosition();
        slAdapter.deleteItem(position);
    }
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MYViewHolder> {

   //... onCreateViewHolder .. etc

   //creating a list of my custom layout view
   private List<MyCustomCardView> cards;

   public void deleteItem(int position){
        cards.remove(position);
        notifyItemRemoved(position);
    }
}

只需这么做,我就可以在我的RecycerView中滑动和删除视图。

共有1个答案

景志
2023-03-14

您可以在模型中使用额外的布尔字段(例如:isShowRemoveButton)并将其设置为true(例如:cards.get(position).SetShowRemoveButton(true))而不是“cards.remove(position)”,并在onBindViewHolder中处理该字段以在条目布局上显示删除按钮

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MYViewHolder> {

       //... onCreateViewHolder .. etc

    private List<MyCustomCardData> cards;//CardData instead of CardView

    public void deleteItem(int position){
            cards.get(position).setShowRemoveButton(true) ;
            notifyItemRemoved(position);
        }

    public void onBindViewHolder(myViewHolder holder, int position) {

            MyCustomCardData currentdata = cards.get(position);
            holder.removeButton.setVisibility(currentdata.isShowRemoveButton? VISIBLE : GONE);
    }
}
 类似资料:
  • 我试图允许刷卡以删除回收器视图中的项目,但由于某些原因,它并不总是玩得很好,显示的是空白而不是纸牌。 我已经制作了抛出和移动项目的代码句柄,以触发滑动动画,当滑动动画结束时,项目将从数据集中删除并通知适配器。 可能是因为我是RecyclerView新手,但是找不到缺少的东西。 我做了什么错在哪里?为什么它有时工作得很好,有时却不起作用? 有没有更好的解决方案来处理滑动到移除的处理?

  • 问题内容: 我正在使用创建一个CheckList应用程序。我想知道如何添加滑动以删除。 这是我的ViewController.swift: 这是MyTableViewCell.swift: 我将iOS8用作部署目标(不确定会造成什么变化)。 问题答案: 添加以下两个功能: Swift 3.0: 斯威夫特4.2

  • 如何在swapCursor函数中实现回收器视图默认项添加/删除动画。notifyDataSetChanged()不会显示任何动画。

  • 定义 模拟短信、微信聊天列表滑动删除的组件。 图片展示 代码演示 import SwipeAction from 'pile/dist/components/swipeaction' const {SwipeAction, Layouts} = pile, { Layout, LayoutHd, LayoutHdTitle, LayoutHdAside, LayoutBd, LayoutFt

  • 我创建小应用程序来显示我的问题。您可以在https://github.com/anton111111/exampleglideblink中看到它。 当我调用RecyerView适配器上的notifyItemChanged时,我只需要更改文本(在我的示例中,它使用id r.id.progress EditText)和图像,而不需要更改。但它会眨眼。 我有能力不眨眼地更改文本吗?