2015-12-10 3 views
2

У меня есть 3 контейнера, один содержит несколько ImageViews, которые пользователь может перетащить в 2 других контейнера. Для этого мне нужно определить, какой из ImageView был удален. Я думал, что это делает getId(), но он извлекает Id целевого контейнера, что имеет смысл.Извлечь идентификатор ImageView при перетаскивании

В коде я использую img_select, чтобы попытаться сохранить значение id ImageView. Любой пример того, как это сделать?

@Override 
    public boolean onDrag(View v, DragEvent event) { 
     int action = event.getAction(); 
     switch (event.getAction()) { 
      case DragEvent.ACTION_DRAG_STARTED: 
       // do nothing 
       img_select = v.getId(); 
       break; 
      case DragEvent.ACTION_DRAG_ENTERED: 
       v.setBackground(enterShape); 
       break; 
      case DragEvent.ACTION_DRAG_EXITED: 
       v.setBackground(normalShape); 
       break; 
      case DragEvent.ACTION_DROP: 
       // I tried to do it here. I get the id of the container 
       img_select = v.getId(); 
       View view = (View) event.getLocalState(); 
       ViewGroup owner = (ViewGroup) view.getParent(); 
       owner.removeView(view); 
       RelativeLayout container = (RelativeLayout) v; 
       container.addView(view); 
       view.setVisibility(View.VISIBLE); 
       break; 
      case DragEvent.ACTION_DRAG_ENDED: 
       v.setBackground(normalShape); 
      default: 
       break; 
     } 
     return true; 
    } 
+0

Вы пытались использовать android: tag? http://developer.android.com/reference/android/view/View.html#attr_android:tag – fasteque

ответ

0

Похоже, что вы храните идентификатор родителя представления, а не перетаскиваете вид. Попробуйте использовать идентификатор из:

View view = (View) event.getLocalState(); img_select = view.getId()

Не забудьте изменить его в ACTION_DRAG_STARTED, а также.

+0

Я получаю -1 как isult – narb

+0

typo .... в результате. есть ли у вас какие-то идеи? – narb

Смежные вопросы