Android'in bir Sürükle ve Bırak örneğini uygulamaya çalışıyorum. Bir maddeye uzun süre bastıktan sonra onu bir hedef seviyeye sürükleyip oraya bırakıyorum. Bir şekilde başarılıyım. Ama farklı bir şey istiyorum. Böyle bir şey yapmış .. Öğeyi bir liste görünümünden sürükleyip dışarıdaki bir metne nasıl bırakabilirsiniz?
Ama liste görünümü için tüm öğeler eklemek istiyorum ve uzun liste görünümü üzerinde bastıktan sonra bir öğeyi yukarı pic eder, o zaman hedef seviyesi ve damlasına kadar öğeyi sürüklemek zorundadır orada. Sanırım bazı dersler denedi
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;
}
};
}
...
Benim Kod aşağıda verilmiştir .. Böyle bir şey istiyorum, ama oradan çözüm alamıyor. Android List View Drag and Drop sort
Hedefte ne yapardı? Demek istediğim, yerinden mi ayrılmış? ve METİN'e dönüştürülür mü? – MAST3RMIND
Hedef, hangi öğeyi sürüklediğimi gösterecek? Temel olarak bu kodu başka bir projeme eklemek istiyorum. Bazı diğer işlevselciler de eklenecek. Bu çözümü alırsam diğer gereksinimlerim karşılanır. – TKumar