2015-10-24 2 views
1

Я создаю ImageViews динамически. Я хочу знать, какой объект будет удален. Пожалуйста, обратите внимание на строку:Как получить идентификатор упавшего объекта?

Toast.makeText (getApplicationContext(), "Вы уже прошли карту", Toast.LENGTH_SHORT) .show();

В этом месте я хочу знать, что я сбросил (идентификатор ImageView был бы замечательным). Как это получить?

private final class MyTouchListener implements View.OnTouchListener { 

    // called when the item is long-clicked 
    @Override 
    public boolean onTouch(View view, MotionEvent event) { 
     // TODO Auto-generated method stub 

     // create it from the object's tag 
     ClipData.Item item = new ClipData.Item((CharSequence)view.getTag()); 

     String[] mimeTypes = { ClipDescription.MIMETYPE_TEXT_PLAIN }; 
     ClipData data = new ClipData(view.getTag().toString(), mimeTypes, item); 
     View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 

     view.startDrag(data, //data to be dragged 
       shadowBuilder, //drag shadow 
       view, //local data about the drag and drop operation 
       0 //no needed flags 
     ); 


     view.setVisibility(View.INVISIBLE); 
     return true; 
    } 
} 

class MyDragListener implements View.OnDragListener { 
    Drawable normalShape = getResources().getDrawable(R.drawable.table); 
    Drawable targetShape = getResources().getDrawable(R.drawable.hands); 

    @Override 
    public boolean onDrag(View v, DragEvent event) { 

     // Handles each of the expected events 
     switch (event.getAction()) { 

      //drag shadow has been released,the drag point is within the bounding box of the View 
      case DragEvent.ACTION_DROP: 
       // if the view is the bottomlinear, we accept the drag item 
       if (event.getX() > 500) { 
        Toast.makeText(getApplicationContext(), "You've passed the card", Toast.LENGTH_SHORT).show(); 
       } 
       View view = (View) event.getLocalState(); 
       ViewGroup viewgroup = (ViewGroup) view.getParent(); 
       viewgroup.removeView(view); 

       RelativeLayout containView = (RelativeLayout) v; 
       containView.addView(view); 
       view.setVisibility(View.VISIBLE); 
       break; 

      default: 
       break; 
     } 
     return true; 
    } 
} 
+0

Вы пытались 'View.getId()'? – Henry

+0

Он возвращает идентификатор View, а не ID ImageView, или я ошибаюсь? Как совместить идентификатор вида с ImageView? – Defozo

ответ

-1

От documenation здесь: http://developer.android.com/reference/android/view/View.OnDragListener.html

общественный абстрактный логический onDrag (View v, DragEvent событие)

Добавлено уровня 11 API Called когда событие перетаскивания отправляется в зрения , Это позволяет слушателям получить возможность переопределить поведение базы .

Параметры

V: мнение, что было получено событие перетаскивания.
event: объект DragEvent для события перетаскивания.

Возвращает true, если событие перетаскивания успешно обработано или false, если событие перетаскивания не было обработано. Обратите внимание, что false приведет к вызову View для вызова обработчика onDragEvent() .

Поэтому, когда вы делаете v.getId(), он вернет идентификатор представления, на котором пользователь начал операцию перетаскивания. Если это будет ImageView, оно вернет его идентификатор, или же идентификатор просмотра, который пользователь перетаскивает.

+0

Я вижу, что любой объект, который я бросаю, остается прежним. Я думаю, это ID RelativeLayout. Почему это? – Defozo

+0

Вы сказали, что создаете 'ImageView' динамически, верно? Когда вы их создаете, присвойте им уникальный идентификатор через 'View.setId();'. Затем проверьте. – Henry

+0

Спасибо, это работает. Однако мне нужно было проверить этот идентификатор в onTouch. – Defozo

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