przeciągnij i upuść android imageview

Obecnie tworzę jedną grę! W tym przypadku istnieje układ ramek, w którym jest jeden HorizontalView i jeden w VerticalView i AbsoluteLayout, aw Absolutelayout znajduje się w prawym górnym rogu w tym, że istnieje ImageView

Teraz W HorizontalView i VerticalView znajduje się lista sukienek obrazów. kiedy kliknę na ten obraz, sukienka zostanie dodana do układu Abosolute .. A na zdjęciu jest jedna kreskówka .. teraz mogę przeciągnąć i upuścić tę sukienkę do tej kreskówki

dla tego kodu XML jest

<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>

Teraz jest kod

  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) {
     }

Teraz wszystko zostało wykonane pomyślnie z powyższym kodem, ale kiedy chcę, aby po kliknięciu na górę | Obraz prawej chłopca, obraz również powinien się zmienić, to znaczy, że jest inny rodzaj chłopca, który powinien również zmienić, gdy klikam tego chłopca .. . Próbowałem tak dużo, ale nie mogłem tego uzyskać, proszę, każde ciało może mi pomóc,

questionAnswers(1)

yourAnswerToTheQuestion