How to get an idea when dragging and dragging and android?

I applied the drag and drop function in my application. I have four text fields and I drag them. But I want to know which text has been fined and discarded? I want to know which textview is the deletion target, and the textview is being dragged by name, as indicated in my code.

Below is the code for this.

code to initialize views

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); } 

code to get a dropdown list

 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; } } 
+5
source share
1 answer

Simple, just keep track of your views in the onDrag () callback:

 private int mDragResourceId;//DECLARE THIS FIELD @Override public boolean onDrag(View v, DragEvent event) { // TODO Auto-generated method stub View dragView = (View) event.getLocalState(); //ADD THIS LINE mDragResoruceId = dragView.getId(); //REST OF YOUR CODE } 

Then you can use these two methods to track your last dragged view, both by runtime resource identifier and by resource resource time:

 private int getDragResId(){ return mDragResourceId; } private String getDragResName(){ return getResources().getResourceName(getDragResId()); } 

Good luck.

+4
source

Source: https://habr.com/ru/post/1214872/


All Articles