arrastar e soltar imageview android

Atualmente estou desenvolvendo um jogo! Em que há um layout de quadro em que há um HorizontalView e um em VerticalView e AbsoluteLayout e em Absolutelayout está no canto superior direito em que há um ImageView

Agora em HorizontalView e VerticalView, há uma lista de vestidos de imagens. Quando clico nessa imagem, o vestido é adicionado ao layout do Abosolute. E no imageView há um desenho animado. Agora posso arrastar e soltar o vestido nesse desenho animado.

para esse código XML é

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/pink_bg" >



<ListView android:id="@+id/vlistview"
    android:layout_alignParentTop="true"
    android:layout_width="60dp"
    android:layout_marginBottom="60dp"
    android:layout_height="wrap_content"
    android:scrollingCache="false"/>

<com.devsmart.android.ui.HorizontalListView
    android:id="@+id/hlistview"
    android:layout_alignParentBottom="true"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    />

<AbsoluteLayout
    android:id="@+id/frameLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="60dp"
    android:layout_marginLeft="60dp"
    android:padding="10dp" >

         <ImageView
             android:id="@+id/imgKitty"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:src="@drawable/hk1" />

</AbsoluteLayout>

Agora o código é

  public class MainActivityAbs extends Activity implements OnClickListener, OnTouchListener {
int images1[], images2[];
static int imgKittyNo = 0;
static int kittyStatus = 0;
int[] kitties;
ImageView imgKitty;
ImageView mKittyDress;
private AbsoluteLayout mKittyBGLayer;
ArrayList<ImageView> mArrayList = new ArrayList<ImageView>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    kitties = new int[] { R.drawable.hk1, R.drawable.hk2, R.drawable.hk3, R.drawable.hk4, R.drawable.hk5 };

    images1 = new int[] { R.drawable.hk_a1, R.drawable.hk_a2, R.drawable.hk_a3, R.drawable.hk_a4, R.drawable.hk_a5, R.drawable.hk_a6,
            R.drawable.hk_a7, R.drawable.hk_a8, R.drawable.hk_dress, R.drawable.hk_dress, R.drawable.hk_dress2, R.drawable.hk_dress3,
            R.drawable.hk_dress4, R.drawable.hk_dress5, R.drawable.hk_dress6, R.drawable.hk_dress7, R.drawable.hk_dress8, R.drawable.hk_dress9,
            R.drawable.hk_dress10, R.drawable.hk_dress11, R.drawable.hk_dress12, R.drawable.hk_dress13, R.drawable.hk_dress14,
            R.drawable.hk_dress15, R.drawable.hk_dress16, R.drawable.hk_dress17, R.drawable.hk_dress18, R.drawable.hk_dress19,
            R.drawable.hk_dress20, R.drawable.hk_dress21 };

    images2 = new int[] { R.drawable.hk_flo, R.drawable.hk_flo2, R.drawable.hk_glasses, R.drawable.hk_glasses2, R.drawable.hk_glasses3,
            R.drawable.hk_hair1, R.drawable.hk_hair2, R.drawable.hk_hair3, R.drawable.hk_hair4, R.drawable.hk_hair5, R.drawable.hk_hat1,
            R.drawable.hk_hat2, R.drawable.hk_hat3, R.drawable.hk_hat4, R.drawable.hk_hat5, R.drawable.hk_hat6, R.drawable.hk_ribon1,
            R.drawable.hk_ribon2, R.drawable.hk_ribon3, R.drawable.hk_ribon4, R.drawable.hk_ribon5, R.drawable.hk_ribon6, R.drawable.hk_ribon7,
            R.drawable.hk_ribon8, R.drawable.hk_ribon9, R.drawable.hk_ribon10, R.drawable.hk_ring, R.drawable.hk_glasses, R.drawable.hk_glasses2,
            R.drawable.hk_glasses3 };

    ListView vListView = (ListView) findViewById(R.id.vlistview);
    vListView.setAdapter(new VAdapter(this));

    HorizontalListView hListView = (HorizontalListView) findViewById(R.id.hlistview);
    hListView.setAdapter(new HAdapter(this));
    imgKitty = (ImageView) findViewById(R.id.imgKitty);
    // imgKitty.setOnClickListener(this);
    mKittyBGLayer = (AbsoluteLayout) findViewById(R.id.frameLayout);
    setupViews(kitties[0]);


    vListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            setupViews(images2[arg2]);
        }

    });

    hListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            setupViews(images1[arg2]);
        }

    });

    /*imgKitty.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            System.out.println("ImgKitty is called");
        }
    });*/
    mKittyBGLayer.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            for (ImageView img1 : mArrayList) {
                if (kittyStatus == img1.getId()) {
                    mKittyDress = img1;
                    break;
                }
            }
            if(mKittyDress!=null) {
            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, (int) event.getX() - mKittyDress.getWidth()
                    / 2, (int) event.getY() - mKittyDress.getHeight() / 2);
            mKittyDress.setLayoutParams(lp);
            }
            return true;
        }
    });

    final ImageView imgClearAll = (ImageView)findViewById(R.id.imgClearAll);
    imgClearAll.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(mKittyBGLayer!=null && mArrayList!=null)
            {
                mKittyBGLayer.removeAllViews();
                mKittyBGLayer.addView(imgKitty);
                mArrayList.clear();
            }

        }
    });

}

@Override
public boolean onTouch(View v, MotionEvent event) {
    boolean isKitty = false;
    for (int i = 0; i < kitties.length; i++) {
        if (v.getId() == kitties[i]) {
            isKitty =true;
        }
    }
    if(!isKitty)
        kittyStatus = v.getId();
    return false;
}

private void setupViews(int args) {

    if (args == R.drawable.hk1 || args == R.drawable.hk2 || args == R.drawable.hk3 || args == R.drawable.hk4 || args == R.drawable.hk5
            || args == R.drawable.hk6) {
        imgKitty.setImageResource(args);
    } else {

        mKittyDress = new ImageView(this);
        mKittyDress.setImageResource(args);
        mKittyDress.setId(imgKittyNo++);
        mKittyDress.setOnTouchListener(MainActivityAbs.this);
        mArrayList.add(mKittyDress);
        mKittyBGLayer.addView(mKittyDress);
    }

}


private class HAdapter extends BaseAdapter {

    private Context context;
    LayoutInflater inflater;

    public HAdapter(Context context) {
        // TODO Auto-generated constructor stub
        this.context = context;
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return images1.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        HViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.listinflate, null);
            holder = new HViewHolder();
            convertView.setTag(holder);

        } else {
            holder = (HViewHolder) convertView.getTag();
        }
        holder.img = (ImageView) convertView.findViewById(R.id.image);
        holder.img.setImageResource(images1[position]);
        return convertView;
    }

}

class HViewHolder {
    ImageView img;
}



private class VAdapter extends BaseAdapter {

    private Context context;
    LayoutInflater inflater;

    public VAdapter(Context context) {
        // TODO Auto-generated constructor stub
        this.context = context;
        inflater = LayoutInflater.from(context);

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return images2.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.listinflate, null);
            holder = new ViewHolder();
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.img = (ImageView) convertView.findViewById(R.id.image);
        holder.img.setImageResource(images2[position]);

        return convertView;
    }

}

class ViewHolder {
    ImageView img;
}

@Override
public void onClick(View v) {
     }

Agora todos são feitos com sucesso com o código acima, mas quando eu também quero que se eu clicar na imagem superior do menino, a imagem também deve mudar, significa que há outro tipo de menino que eles também devem mudar quando clico no menino .. Eu tentei muito, mas não consegui, por favor, qualquer corpo pode me ajudar,

questionAnswers(1)

yourAnswerToTheQuestion