我能够在列表中实现拖放项目并重新排序。我需要做的是实现一个删除功能,在那里人们可以选择和持有一个项目,并将其拖到垃圾图标。一旦它与垃圾图标重叠,后者将将其颜色从灰色更改为红色。一旦用户释放该项目,将出现一个确认模式。
从演示中可以看到,将列表中的前三项拖向垃圾图标并没有将垃圾图标变成红色,而是启动了模式。第四项确实改变了垃圾图标的颜色,但它在没有确认的情况下立即从列表中删除。
拖放是使用ItemTouchHelperCallback实现的。
public class EditItemTouchHelperCallback extends ItemTouchHelper.Callback
我在回收器视图中实现了向左滑动以删除操作,如下所示:
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);
s
当我们从末尾滑动时,我可以显示红色背景和删除图标。我试图实现部分滑动功能,其中在部分滑动,滑动停止之前的删除图标。我试着跟踪这些。但是,这对我没有用。请给我指出正确的方向。
public class PriorityItemTouchHelperCallback extends ItemTouchHelper.Callback {
private final ItemTouchHelperListener mAdapter;
private Context context;
public PriorityItemTouchHelperCallback(
ItemTouchH
首先,我看到了这个问题:
然而,即使标题显示为“带文本/图标”,答案也只涵盖了使用Canvas对象绘制矩形。
现在我已经绘制了一个实现的绿色矩形;但是我想通过添加“完成”按钮来使它更明显,就像在下面的屏幕截图上一样。
我创建了一个自定义视图:
public class ChoosePlanView extends LinearLayout{
public ChoosePlanView(Context context) {
super(context);
init();
}
public ChoosePlanView(Cont
我需要改变基于滑动方向的行项的背景颜色,如果向右滑动,则将颜色更改为绿色,如果向左滑动,则将颜色更改为红色。
但我发现很难弄清楚刷卡的方向。
这是我的代码。
public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback
{
private final ItemTouchHelperAdapter mAdapter;
public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter mAdapter) {
this.mAdapter = mA
下面是我的代码。我可以向右和向左滑动。但问题是,一旦我向左或向右滑动,我就不能再次向右或向左滑动来回到初始状态。例如,首先我会有文本视图的列表,然后如果我向左滑动,我会得到一个图标,文本视图将是gone.So,现在我需要向右滑动才能返回文本视图,而那个时间图标应该会消失。我该怎么做呢?
public class MainActivity extends AppCompatActivity {
private ArrayList countries = new ArrayList<>();
private DataAdapter adapter
我加载了存储在SQLiteDatabase中的数据并将其放入RecyclerView中。RecyclerView应用ItemTouchHelper.SimpleCallback来启用onMove()。当我更改垂直列出的项目的顺序时,我希望以相同的顺序将它们保存在SQLiteDatabase中。
MainActivity.kt
val simpleItemTouchCallback = object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN, 0) {
override fun
我有一个项目,在其中,我需要滑动一行在两种方式,以启动一个行动。向左滑动应从特定列表中删除该项目(而不从原始列表中删除,从而将其保留在回收视图数据集中),而右击应将该项目添加到另一个列表中(同样不是原始列表)。我实现了一个ItemTouchHelperAdapter和一个ItemTouchHelperCallback,我可以检测到右/左的滑动,但是视图会被从屏幕上转换出来,然后留下一个空白的矩形。有什么想法吗?
public interface ItemTouchHelperAdapter {
/**
* Called when an item has been dismissed by
一切都很好,但有一件事并没有真正发挥作用。删除图标只呈现在回收者视图列表的第一个元素上,正如您在图像中所看到的那样。
下面是我的ItemTouchHelper类代码:
class ItemSwipeCallback(val context: Context) : ItemTouchHelper.Callback() {
private val listeners = ArrayList<OnItemSwipe>()
private val paint = Paint()
val theme = context.themeId
val i
我正在用java开发一个android应用程序,用户可以使用该应用程序添加、删除和更新项目,并使用SQLite数据库存储它们。现在,我想添加另一个功能,使用它可以拖动和删除项目(重新排序)。我知道可以使用ItemTouchHelper类来完成,但是,我在应用程序中所做的是,数据被存储在数据库中,我正在检索数据并使用回收视图显示数据,我需要在onMove方法中传递一个列表作为参数之一。
我怎么能这么做?
密码-
// under the onCreate method
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouc
我正在使用中的示例来处理RecyclerView上的拖动和滑动。这是伟大的工作,除了我不知道如何阻止它上/下/左滑动。我可以忽略这些滑动,但我甚至不想让它们发生。这有可能吗?
我甚至在上面链接的示例中修改了这段代码,以便将ItemTouchHelper.RIGHT添加到刷标志中,但没有帮助。
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
// Set movement flags based on the lay
我遇到的问题是,在拖动RecyclerView上的项时,onMove()回调不能更改项目数组的实际顺序,因为该数组由PagedListAdapter管理。如果我在DB上这样做,这会发生在后台线程上,因为Room要求我这样做(而且我确实应该在后台线程上执行DB ),正如您可以想象的那样,在拖动项目时,这样做不太好。
我对ItemTouchHelper工作方式的理解是,在onMove()上,我必须重新排列我想要直观显示的任何内容,然后我可以保存到clearView()上的DB。但我不能在onMove()上重新安排。
这是我当前代码的一个简化,它可以工作,但是拖曳的视觉暗示不能很好地工作。
inne