gpt4 book ai didi

android - 将 View 拖放到 RecyclerView item Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:05:14 26 4
gpt4 key购买 nike

我正在开发一个屏幕包含以下内容的 android 应用程序:

  1. 包含下图类别的 Recycler View
  2. 底部的单独 View ,用户应该能够将其拖动到 RecyclerView 项目上,并且在放置后用户将在 RecyclerView 项目数据中显示更改(例如项目计数在类别中)

我需要一些关于如何实现这个过程的帮助将View拖到Recycler item中,下图说明了我想做但不知道怎么做

enter image description here

非常感谢任何帮助

最佳答案

首先在您的回收器适配器的 onCreateViewHolder 中向您的膨胀 View 添加一个 draglistener。

view.setOnDragListener(new OnDragListener() {
@Override
public boolean onDrag(View view, DragEvent dragEvent) {

switch (dragEvent.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
// drag has started, return true to tell that you're listening to the drag
return true;

case DragEvent.ACTION_DROP:
// the dragged item was dropped into this view
Category a = items.get(getAdapterPosition());
a.setText("dropped");
notifyItemChanged(getAdapterPosition());
return true;
case DragEvent.ACTION_DRAG_ENDED:
// the drag has ended
return false;
}
return false;
}
});

ACTION_DROP 情况下,您可以更改模型并调用 notifyItemChanged(),或者直接修改 View (不会处理重新绑定(bind)情况)。同样在 onCreateViewHolder 中添加一个 longClickListener 到您的 View,然后在 onLongClick 中开始拖动:

ClipData.Item item = new ClipData.Item((CharSequence) view.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(view.getTag().toString(),
mimeTypes, item);
view.setVisibility(View.GONE);
DragShadowBuilder myShadow = new DragShadowBuilder(view);

if (VERSION.SDK_INT >= VERSION_CODES.N) {
view.startDragAndDrop(dragData, myShadow, null, 0);
} else {
view.startDrag(dragData, myShadow, null, 0);
}

有关拖放的更多信息,请查看 android developers site

关于android - 将 View 拖放到 RecyclerView item Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42066261/

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