я реализовал функцию перетаскивания & в моих app.I имеет четыре TextView & я перетащить & drop.But я хочу знать, какой TextView был потащили & упало? Я хочу знать, какой TextView является целью снижения & который тащится TextView по имени, указанному в моем коде.Как получить представление при перетаскивании и андроиде?
Ниже приведен код этого.
код инициализации мнения
public void initView()
{
p_one = (TextView) findViewById(R.id.tgoal_tvone);
p_two = (TextView) findViewById(R.id.tgoal_tvtwo);
p_three = (TextView) findViewById(R.id.tgoal_tvthree);
p_four = (TextView) findViewById(R.id.tgoal_tvfour);
query = (ImageView) findViewById(R.id.tgoal_img_query);
tv_contentOne=(TextView)findViewById(R.id.tgoal_tvoneContent);
tv_contentTwo=(TextView)findViewById(R.id.tgoal_tvtwoContent);
tv_contentThree=(TextView)findViewById(R.id.tgoal_tvthreeContent);
tvContentFour=(TextView)findViewById(R.id.tgoal_tvfourContent);
query.setOnClickListener(this);
//set touch listeners
tv_contentOne.setOnTouchListener(new ChoiceTouchListener());
tv_contentTwo.setOnTouchListener(new ChoiceTouchListener());
tv_contentThree.setOnTouchListener(new ChoiceTouchListener());
tvContentFour.setOnTouchListener(new ChoiceTouchListener());
//set drag listeners
tv_contentOne.setOnDragListener(new ChoiceDragListener());
tv_contentTwo.setOnDragListener(new ChoiceDragListener());
tv_contentThree.setOnDragListener(new ChoiceDragListener());
tvContentFour.setOnDragListener(new ChoiceDragListener());
/**set up the action bar**/
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0099CC")));
bar.setTitle(getResources().getString(R.string.tgoal_header));
bar.setDisplayHomeAsUpEnabled(true);
bar.setHomeButtonEnabled(true);
}
код для получения вид на падение
class ChoiceDragListener implements OnDragListener
{
int count=0;
@Override
public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
View dragView = (View) event.getLocalState();
switch (event.getAction())
{
case DragEvent.ACTION_DRAG_STARTED:
//no action necessary
break;
case DragEvent.ACTION_DRAG_ENTERED:
//no action necessary
break;
case DragEvent.ACTION_DRAG_EXITED:
//no action necessary
break;
case DragEvent.ACTION_DROP:
//handle the dragged view being dropped over a drop view
//handle the dragged view being dropped over a target view
View view = (View) event.getLocalState();
//stop displaying the view where it was before it was dragged
//view dragged item is being dropped on
TextView dropTarget = (TextView) v;
//view being dragged and dropped
TextView dropped = (TextView) view;
String droppedTarget=dropTarget.getText().toString();
dropTarget.setText(dropped.getText());
dropped.setText(droppedTarget);
//make it bold to highlight the fact that an item has been dropped
dropTarget.setTypeface(Typeface.DEFAULT_BOLD);
dropTarget.setBackgroundColor(getResources().getColor(R.color.papya_orange));
Log.i("log", "TV Dropped");
if(dropTarget==p_one)
{
Log.i("log", "Drop View is First TextView");
}
break;
case DragEvent.ACTION_DRAG_ENDED:
//no action necessary
break;
default:
break;
}
return true;
}
}
Правильно. Но просто примечание при вызове v.startDrag (dragData, myShadow, v, 0); не забудьте передать v (view), которые нужно перетащить в параметр localState. Я использовал, чтобы передать его null, поэтому, когда я попробовал ваш ответ, он разбился, пока не понял, что его нужно передать с помощью startDrag(). – Amt87