Arrastrar y soltar sin eliminar del propietario

Estoy utilizando en un LinearLayout con tres TextViews arrastrar y soltar para moverlo a otro contenedor. Mi código:

OnDragListener dragi = new OnDragListener() { @Override public boolean onDrag(View arg0, DragEvent arg1) { // TODO Auto-generated method stub int action = arg1.getAction(); switch (action) { case DragEvent.ACTION_DRAG_STARTED: break; case DragEvent.ACTION_DRAG_ENTERED: break; case DragEvent.ACTION_DRAG_EXITED: break; case DragEvent.ACTION_DROP: View view = (View) arg1.getLocalState(); ViewGroup owner = (ViewGroup) view.getParent(); owner.removeView(view); // LinearLayout container = (LinearLayout) arg0; container.addView(view); view.setVisibility(View.VISIBLE); } break; case DragEvent.ACTION_DRAG_ENDED: break; default: break; } return true; } }; 

Mi problema es que no quiero quitar la vista del contenedor de la base, debe permanecer allí y apenas agrega una copia al segundo envase.

Gracias

Una vista sólo puede tener un padre en un momento dado, lo que puede hacer es en su arrastre, en lugar de dejar caer la vista en el nuevo contenedor crear un clon de la vista y añadir que en el nuevo contenedor.

Para clonar una vista: si su vista => Botón denominado myButton, puede hacer esto:

 Button myButtonClone = new Button(context); myButtonClone.setText(myButton.getText()); 

Usted tendrá un clon del botón original. Esto se aplica a cualquier otra propiedad, si desea hacer un clon de un ImageView simplemente crear uno nuevo y establecer su dibujable para ser el mismo que el primer ImageView.

Si desea clonarlo, la nueva vista creada le pedirá una vista de padre. Debido a que un niño puede tener como máximo a uno de los padres directos de esa manera, tiene que asignarle un mismo o diferente padre.

Aquí está una descripción de google:

Cuando inicia un arrastre, incluye tanto los datos que se están moviendo como los metadatos que describen estos datos como parte de la llamada al sistema. Durante el arrastre, el sistema envía eventos de arrastre a los oyentes del evento de arrastre o métodos de devolución de llamada de cada vista del diseño. Los oyentes o los métodos de devolución de llamada pueden utilizar los metadatos para decidir si desean aceptar los datos cuando se descartan. Si el usuario descarta los datos sobre un objeto Ver y que el método de escucha o devolución de llamada del objeto Vista ha dicho previamente al sistema que desea aceptar la caída, el sistema envía los datos al método de escucha o devolución de llamada en un evento de arrastre

Lea esto para más detalles. Te ayudará mucho

Con el marco de arrastrar y soltar de Android, puede permitir a sus usuarios mover datos de una Vista a otra Vista en el diseño actual mediante un gesto gráfico de arrastrar y soltar. El marco incluye una clase de evento de arrastre, arrastrar oyentes y métodos y clases de ayuda.

Esto es veraniego. Si desea seguir siendo la vista en el padre existente sólo hacer una copia en el mismo padre y hacer visibilidad GONE o lo que sea su necesidad.

  • Cómo cancelar View.OnDragListener en android durante la operación de arrastrar?
  • Drag n drop textview en android
  • Android: realizar arrastrar y soltar mediante programación
  • Cómo arrastrar varias vistas de botón en java
  • Establecer anclaje personalizado al arrastrar una vista
  • Android obtiene tiempo en este formato `aaaa-mm-dd hh: mm: ss`
  • Android - Restringir arrastrar y soltar a un cuadro delimitador
  • ¿Cómo obtener el formato de fecha seleccionado por el usuario en Android?
  • Cómo convertir la ubicación de toque de View en la ubicación de la pantalla HTML de WebView
  • ¿Por qué estoy recibiendo este error "recurso esperado de tipo raw" en Android Studio?
  • Java convertir la marca de tiempo UTC a DateTime local
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.