【问题标题】:Androidx swipe to show delete icon in recycler view and swipe further to deleteAndroid滑动以在recyclerview中显示删除图标并进一步滑动以删除
【发布时间】:2019-08-09 07:52:31
【问题描述】:

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

ItemTouchHelper

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);
    }
}

简单地说,我可以在我的 recyclerView 中滑动和删除视图。

我想做的是中途停止滑动并显示一个图标。然后,用户可以单击该图标,继续滑动并删除视图,或者自己继续滑动,视图将被删除。

就像现在一样,用户几乎不能向左滑动,然后自动继续滑动,我想要一个中间步骤,显示一个可点击的图标。上面的代码怎么能做到这一点?

【问题讨论】:

    标签: android android-recyclerview swipe androidx itemtouchhelper


    【解决方案1】:

    您可以在模型中使用额外的布尔字段(例如:isShowRemoveButton),而不是将“cards.remove(position)”设置为 true(例如:cards.get(position).setShowRemoveButton(true))并在您的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);
        }
    }
    

    【讨论】:

    • 我希望得到一个更全面的答案,不需要完整的代码,只需要重要的 sn-ps 关于如何实现这个
    • 我认为你必须列出你的数据对象而不是你的自定义布局视图的列表
    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    相关资源
    最近更新 更多