问题描述
我正在开发一个 android 应用程序,它的屏幕包含以下内容:
I am developing an android application that has a screen contains the following:
- Recycler 视图,包含如下图所示的类别
- 底部的单独视图,用户应该能够将其拖动到 RecyclerView 项目上,拖放后用户将在 RecyclerView 项目数据处显示更改(例如类别中的项目计数)
我需要一些有关如何实施此流程的帮助将 View 拖入 Recycler 项,下图准确解释了我想要做什么但不知道该怎么做
I need some help about how to implement this processto drag View into Recycler item, the following figure explains exactly what I want to do but have no idea how to do it
非常感谢任何帮助
推荐答案
首先在你的回收适配器的 onCreateViewHolder
中添加一个 draglistener 到你的膨胀视图.
Start by adding a draglistener to your inflated view in onCreateViewHolder
of your recycler adapter.
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()
,或者直接修改视图(不会处理重新绑定情况).同样在 onCreateViewHolder
中添加一个 longClickListener
到您的 View
中,然后在 onLongClick
中开始拖动:
In the ACTION_DROP
case you can either change the model and call notifyItemChanged()
, or modify directly the view (that won't handle the rebinding case). Also in onCreateViewHolder
add a longClickListener
to your View
, and in onLongClick
start the drag:
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 开发者网站
For more information about drag and drop check out the android developers site
这篇关于将 View 拖放到 RecyclerView 项目 Android 上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!