¿Cómo registrar un DragEvent mientras ya está dentro de uno y hacer que escuche el DragEvent actual?

Mi pregunta está relacionada con la API de arrastrar y soltar en Android. Pido disculpas si mi pregunta fue confusa. Pero esencialmente, cuando desea iniciar una operación de arrastrar y soltar, debe invocarstartDrag() en unView. Lo pasas en alguna información, y luego le das unaOnDragListener en el que escuchar a unView que está siendo arrastrado. Cuando se inicia un arrastre, en mi ejemplo una pulsación larga, todas las Vistas que pueden aceptar cualquier información se registran con el sistema para aceptar esta información. Tendría más sentido si leyera rápidamente algo de esto en los documentos de Android paraArrastrar y soltar. Pero esa es una descripción general rápida de cómo funciona, suponiendo que no la haya usado antes y le gustaría.

Ahora mi pregunta es esencialmente en un problema que he encontrado. Me gustaría crear unView mientras que laonDragListener se está ejecutando que también acepta información del sistema en un arrastrado actualmenteView. El problema es que no funciona. No me sorprende ya que la Vista no se registró cuando comenzó la operación de Arrastre por primera vez. La pregunta es cómo puedo registrarlo sobre la marcha. La documentación de Android le muestra cómo registrarla al principio, pero no cuando ya está en una.

MyDragListener (Código para mi onDragListener. Ahora solo juego con él).

protected class MyDragListener implements View.OnDragListener {

    @Override
    public boolean onDrag(View v, DragEvent event) {

        // Defines a variable to store the action type for the incoming event
        final int action = event.getAction();

        // Handles each of the expected events
            switch(action) {

                case DragEvent.ACTION_DRAG_STARTED:
                    // Determines if this View can accept the dragged data
                    /*The way it works is it essentially turns anything that can accept stuff to Blue 
                     * or whatever color. It also does not need to do anything in terms of showing it can accept anything.*/
                    if(event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
                        v.setBackgroundColor(Color.BLUE);

                        return (true);

                    } else {
                        return (false);
                    }
                //break;

                case DragEvent.ACTION_DRAG_ENTERED:
                    v.setBackgroundColor(Color.YELLOW);
                    Toast.makeText(v.getContext(), "Height is: "+v.getHeight(), Toast.LENGTH_SHORT).show();
                    return true;
                //break;

                case DragEvent.ACTION_DRAG_LOCATION:
                    //this is triggered right after ACTIN_DRAG_ENTERED
                    Log.d("TestActivity", "Location of the View you are dragging is x: "+event.getX()+" y: "+event.getY());
                    if(v.getHeight()-10 < event.getY() && v.getHeight() > event.getY()&& showingView == false ) {

                            //here you are checking if its in the lower bound of the view
                            LayoutInflater inflater = LayoutInflater.from(v.getContext());
                            LinearLayout layout = (LinearLayout)inflater.inflate(R.layout.some_text, table, false);
                            ((TextView)layout.findViewById(R.id.da_text)).setText("Some text");
                            layout.setTag("Empty");
                            layout.startDrag(ClipData.newPlainText("Empty", "Empty"), new View.DragShadowBuilder(), null, 0);
                            table.addView(layout, Integer.parseInt(v.getTag().toString())+1);
                        showingView = true;
                    }
                    return true;


                case DragEvent.ACTION_DRAG_EXITED:
                    v.setBackgroundColor(Color.BLUE);
                    return true;
                //break;

                case DragEvent.ACTION_DROP:
                    //this is obvious, gets the data in the view that was dropped
                    return true;

                case DragEvent.ACTION_DRAG_ENDED:
                    v.setBackgroundColor(Color.WHITE);
                    return true;


            }//end of switch

        return false;
    }

}//end of MyDragListener

Editar 1

Así que intenté un enfoque diferente. Decidí tener un soporte para miLinearLayout que sería un elemento en elTableLayout. De esa manera yo registraría elOnDragListener entonces solo podía sostenerlo hasta que lo necesitara. Eso falló La primera vez que lo usé, incluso si lo agregué a TableLayout, no escuchaba ningún arrastre, pero cuando lo solté y luego lo presioné por un tiempo, funcionó. Entonces, tiene algo que ver con el hecho de que es invisible, y luego no lo es. Entonces, por defecto, no hace nada cuando es invisible, y no estoy seguro de cómo hacer que eso no suceda, y me permite que haga algo incluso cuando es invisible. ¿Algunas ideas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta