我在回收器视图中实现了向左滑动以删除操作,如下所示:
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中滑动和删除视图。
您可以在模型中使用额外的布尔字段(例如: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)和图像,而不需要更改。但它会眨眼。 我有能力不眨眼地更改文本吗?