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

4
我正在实现从一个ListView到另一个ListView的拖放,我在这里找到了一个示例应用程序:如何将Listview项目拖放到另一个Listview中。使用上述应用程序创建了一个应用程序,在ListView的第4个图像之前都可以正常工作。在我的观点中,默认情况下,ListView显示到第3个位置(即0、1、2、3),如果我将第一个ListView中的第二个位置拖到第二个ListView中,则会显示相同的图像。当我向下滚动时,位置为4、5、6、7。如果我拖动第6个位置,它将占据第2个位置。请帮帮我。
1个回答

0
你应该使用一个for循环。然后将数字计数添加到列表中,并逐个检查每个计数。如果循环的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;
    }

这将帮助您将代码从一个位置推送到另一个位置。在拖动方法中指定您想要推送的x&y位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接