我正在实现从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个位置。请帮帮我
答案 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。