Ich versuche, ein Drag & Drop-Beispiel von Android zu implementieren. Nachdem ich lange auf einen Gegenstand gedrückt habe, ziehe ich ihn auf eine Zielebene und lasse ihn dort fallen. Ich bin irgendwie erfolgreich. Aber ich möchte etwas anderes. Ich habe so etwas getan .. Wie man ein Element aus einer Listenansicht zieht und auf ein externes textView legt?
Aber ich möchte alle Elemente zu einer ListView hinzufügen und ich werde ein Element nach langem Drücken auf Listview pic, dann werde ich das Element auf meine Zielebene ziehen und ablegen es dort. Ich möchte so etwas wie diese ..
My-Code ist unten angegeben ...
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.mango).setOnLongClickListener(longListen);
findViewById(R.id.orange).setOnLongClickListener(longListen);
findViewById(R.id.apple).setOnLongClickListener(longListen);
findViewById(R.id.banana).setOnLongClickListener(longListen);
findViewById(R.id.drop_here).setOnDragListener(DropListener);
listview.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long id) {
// TODO Auto-generated method stub
Log.i("long clicked","pos"+" "+pos);
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
OnLongClickListener longListen = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
DragShadow dragShadow = new DragShadow(v);
ClipData data = ClipData.newPlainText("", "");
v.startDrag(data, dragShadow, v, 0);
return false;
}
};
private class DragShadow extends View.DragShadowBuilder {
ColorDrawable greyBox;
public DragShadow(View view) {
super(view);
// TODO Auto-generated constructor stub
greyBox = new ColorDrawable(Color.LTGRAY);
}
@Override
public void onDrawShadow(Canvas canvas) {
// TODO Auto-generated method stub
// super.onDrawShadow(canvas);
greyBox.draw(canvas);
}
@Override
public void onProvideShadowMetrics(Point shadowSize,
Point shadowTouchPoint) {
// TODO Auto-generated method stub
// super.onProvideShadowMetrics(shadowSize, shadowTouchPoint);
View v = getView();
int height = (int) v.getHeight()/2;
int width = (int) v.getWidth()/2;
greyBox.setBounds(0, 0, width, height);
shadowSize.set(width, height);
shadowTouchPoint.set(width/2, height/2);
}
}
OnDragListener DropListener = new View.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
int dragEvent = event.getAction();
switch (dragEvent) {
case DragEvent.ACTION_DRAG_ENTERED:
Log.i("Drag ", "Entered");
break;
case DragEvent.ACTION_DRAG_EXITED:
Log.i("Drag ", "Exit");
break;
case DragEvent.ACTION_DROP:
Log.i("Drag ", "Drop");
TextView target = (TextView) v;
TextView dragg = (TextView) event.getLocalState();
target.setText(dragg.getText());
break;
default:
break;
}
return true;
}
};
}
Ich habe einige Tutorials versucht, aber ich bin nicht in der Lage Lösung zu erhalten, von dort aus. Android List View Drag and Drop sort
Was würde es am Ziel tun? Ich meine, ist es von seinem Platz entfernt? und es wird zu TEXT konvertiert?! – MAST3RMIND
Ziel zeigt an, welchen Gegenstand ich gezogen habe? Im Grunde möchte ich diesen Code meinem anderen Projekt hinzufügen. Es wird einige andere Funktionalisten hinzugefügt. Wenn ich diese Lösung bekomme, werden meine anderen Anforderungen erfüllt. – TKumar