У меня есть несколько макетов; каждый из которых содержит TextView
. Если пользователь перетащил TextView
в другой TextView
, я собираюсь выполнить метод swapFamily()
, но он срабатывает несколько раз, в зависимости от количества семейств.OnDragListener срабатывает несколько раз?
FamilyItemLayout
- это обычай LinearLayout
с прикрепленным к нему атрибутом String
и с добавлением и установкой add'tl для этого атрибута.
Однако, мой вопрос заключается в том, что
private class onDropFamily implements View.OnDragListener {
@Override
public boolean onDrag(View view, DragEvent event) {
TextView txtDragged = (TextView) event.getLocalState();
TextView txtTarget = (TextView) view;
String familyDragged = ((FamilyItemLayout) txtDragged.getParent()).getFamily();
String familyTarget = ((FamilyItemLayout) txtTarget.getParent()).getFamily();
switch (event.getAction()) {
// Signals the start of a drag and drop operation.
case DragEvent.ACTION_DRAG_STARTED:
break;
// Signals to a View that the drag point has entered the bounding box of the View.
case DragEvent.ACTION_DRAG_ENTERED:
view.setBackgroundResource(R.mipmap.pill_sun);
break;
// Signals that the user has moved the drag shadow outside the bounding box of the View.
case DragEvent.ACTION_DRAG_EXITED:
view.setBackgroundResource(R.mipmap.pill_sky);
break;
// Signals to a View that the user has released the drag shadow, and the drag point is within the bounding box of the View.
case DragEvent.ACTION_DROP:
break;
// Signals to a View that the drag and drop operation has concluded.
case DragEvent.ACTION_DRAG_ENDED:
// Check if drag event was successful
if (dropEventHandled(event)) {
fixedPlan.swapFamily(familyDragged, familyTarget);
}
txtDragged.setVisibility(View.VISIBLE);
txtTarget.setBackgroundResource(R.mipmap.pill_sky);
break;
}
return true;
}
private boolean dropEventHandled(DragEvent dragEvent) {
return dragEvent.getResult();
}
}
Большое вам спасибо. Я волновался. Я должен был прочитать документацию более тщательно. –
Добро пожаловать. Это переполнение стека. –