0
私は、SDカードから画像を含む2つのリストビューを含むアプリケーションを準備しています。別のリストビューにはデフォルトアイコンの連絡先が含まれています。この連絡先リストビューの最初のリストビュー。画像を1つのリストビューから別のリストビューにアンドロイドでドラッグする方法
私は、SDカードから画像を含む2つのリストビューを含むアプリケーションを準備しています。別のリストビューにはデフォルトアイコンの連絡先が含まれています。この連絡先リストビューの最初のリストビュー。画像を1つのリストビューから別のリストビューにアンドロイドでドラッグする方法
private DragListener mDragListener =
new DragListener() {
int backgroundColor =#f000;// add color of ur choice
int defaultBackgroundColor;
public void onDrag(int x, int y, ListView listView) {
// TODO Auto-generated method stub
}
public void onStartDrag(View itemView) {
itemView.setVisibility(View.INVISIBLE);
defaultBackgroundColor = itemView.getDrawingCacheBackgroundColor();
itemView.setBackgroundColor(backgroundColor);
ImageView iv = (ImageView)itemView.findViewById(R.id.imageView1);
if (iv != null) iv.setVisibility(View.INVISIBLE);
}
public void onStopDrag(View itemView) {
itemView.setVisibility(View.VISIBLE);
itemView.setBackgroundColor(defaultBackgroundColor);
ImageView iv = (ImageView)itemView.findViewById(R.id.imageView1);
if (iv != null) iv.setVisibility(View.VISIBLE);
}
};
インターフェースを作成し、書き込みをタッチイベントに使用し、リストビューから子IDを取る賢明uは
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;
}
をドロップして削除することができますウルListActivity class.Likeにそのオブジェクトを呼び出しますリストビューからメソッドをドラッグします。