如何实现ListView中的拖放到另一个Listview?

时间:2011-10-27 11:04:48

标签: android

我正在实现从ListView拖放到另一个ListView,我在这里获得了示例应用程序,

How to Drag drop Listview item to another Listview

使用上面的应用程序创建了一个应用程序,它正常工作到ListView的第4个图像。在我的视图中默认情况下ListView显示到第3个位置(表示0,1,2,3),如果我从第一个位置拖动第2个位置ListView并放入第二个ListView,它显示相同的图像。当我向下滚动时,位置是4,5,6,7。如果我拖动第6个位置,它将占据第2个位置。请帮帮我

1 个答案:

答案 0 :(得分:0)

你应该使用for循环。然后给列表中的数字计数并检查每个count.Check如果循环的id是相同的,如果它们不同,你将直接在存储的地方获得不同的图像。

public boolean onTouchEvent(MotionEvent ev) {
        // TODO Auto-generated method stub
        final int action = ev.getAction();
        final int x = (int) ev.getX();
        final int y = (int) ev.getY();  

        if (action == MotionEvent.ACTION_DOWN && x < this.getWidth()/4) {
            mDragMode = true;
        }

        if (!mDragMode) 
            return super.onTouchEvent(ev);

        switch (action) {
            case MotionEvent.ACTION_DOWN:
                mStartPosition = pointToPosition(x,y);
                if (mStartPosition != INVALID_POSITION) {
                    int mItemPosition = mStartPosition - getFirstVisiblePosition();
                    mDragPointOffset = y - getChildAt(mItemPosition).getTop();
                    mDragPointOffset -= ((int)ev.getRawY()) - y;
                    startDrag(mItemPosition,y);
                    drag(0,y);// replace 0 with x if desired
                }   
                break;
            case MotionEvent.ACTION_MOVE:
                drag(0,y);// replace 0 with x if desired
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
            default:
                mDragMode = false;
                mEndPosition = pointToPosition(x,y);
                stopDrag(mStartPosition - getFirstVisiblePosition());
                if (mDropListener != null && mStartPosition != INVALID_POSITION && mEndPosition != INVALID_POSITION) 
                     mDropListener.onDrop(mStartPosition, mEndPosition);
                break;
        }
        return true;
    }

这将有助于您将代码从一个位置推送到另一个位置。并且在Drag方法上指定要推送它的x&amp; y。