将项目从回收站视图中拖出到另一个视图

时间:2018-07-12 14:43:15

标签: java android

我创建了一个回收站视图,可以在其中拖动项目。以下来自我的适配器:

 public void onBindViewHolder(final FootballPitchMainAdapter.ViewHolder holder, int position) {
        holder.rvPlayerNameTop.setText("testing");
        holder.linearLayoutFull.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    ClipData data = ClipData.newPlainText("", "");
                    View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(
                            view);
                    view.startDrag(data, shadowBuilder, view, 0);
                    view.setVisibility(View.INVISIBLE);
                    return true;
                } else {
                    return false;
                }
            }
        });

现在这确实可行,我可以拖动linearLayout,其中包含imageView和texview。拖动使我可以将这些物品移出回收站视图。

如果使用运动,则无法将linearlayout框架移出RV。

但是我的问题是,一旦拖动视图,我希望能够将其放置在屏幕上的任何位置。

因此,在创建RV的类中,我设置了以下内容:

pitchRelativeLayout.setOnDragListener(new MyDragListener());
     class MyDragListener implements View.OnDragListener{

            @Override
            public boolean onDrag(View v, DragEvent event) {
                switch(event.getAction()) {
                    case DragEvent.ACTION_DRAG_STARTED:
                        //Do nothing
                        break;

                    case DragEvent.ACTION_DRAG_ENTERED:
                        break;

                    case DragEvent.ACTION_DRAG_EXITED :
                        break;

                    case DragEvent.ACTION_DRAG_LOCATION  :
                        break;

                    case DragEvent.ACTION_DRAG_ENDED   :
                        // Do nothing
                        break;

                    case DragEvent.ACTION_DROP:
                        View view = (View) event.getLocalState();
                        ViewGroup owner = (ViewGroup) view.getParent();
                        owner.removeView(view);
                        RelativeLayout container = (RelativeLayout) v;
                        container.addView(view);
                        view.setVisibility(View.VISIBLE);
                        break;
                    default: break;
                }
                return true;

            }
        }

PitchLayout是一个覆盖整个屏幕的相对布局。这个想法只是从RV中拖动一个项目并将其拖放到任何地方。

以下是一张图片,希望对此有更好的说明: PitchLayout

我试图告诉相对布局以听取拖动项目,然后将其放置在此处。 上面的代码来自我尝试过的在线教程,来自Stackover Flow的答案

0 个答案:

没有答案
相关问题