我有一个适用于onClick事件的项目列表,但我无法获得onDrag事件。
我的课程如下:
public class ActListadoCategorias extends AppCompatActivity {
...
private void init() {
m_lvwCategorias = (ListView) findViewById(R.id.lvwCategorias);
m_lvwCategorias.setAdapter(m_itemCategoria);
m_lvwCategorias.setOnItemClickListener(onItemCategoriaListViewOnClickListener);
m_lvwCategorias.setOnDragListener(onItemCategoriaListViewOnDragListener);
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_listado_categorias);
init();
getCategorias();
}
...
private AdapterView.OnItemClickListener onItemCategoriaListViewOnClickListener = new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
try {
Categoria categoria = (Categoria)m_lvwCategorias.getItemAtPosition(position);
Intent actCategoriaIntent = new Intent(m_actListadoCategorias, ActCategoria.class);
actCategoriaIntent.putExtra("Activity", TipoDato.TipoActividad.ACTUALIZACION);
actCategoriaIntent.putExtra("Object", categoria);
startActivityForResult(actCategoriaIntent, 0);
}
catch(Exception ex){
Mensaje.mostrar("Error", m_actListadoCategorias);
}
}
};
private AdapterView.OnDragListener onItemCategoriaListViewOnDragListener = new AdapterView.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
final int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_MOVE: {
}
return true;
}
}
return false;
}
};
}
&#13;
我在onItemCategoriaListViewOnDragListener中放置了一个断点,但是从列表中拖动任何项都不会产生相关的事件。
欢迎任何想法或建议。
由于
答案 0 :(得分:0)
我认为您使用错误的OnDragListener
尝试使用:View.OnDragListener
作为示例尝试此链接:&#34; Drag and drop, ListView and item Views that miss the ACTION_DRAG_STARTED event&#34;
答案 1 :(得分:0)
缺少LongClick以激活拖动
m_lvwCategorias.setOnItemLongClickListener(onItemCategoriaListViewOnItemLongClickListener);
m_lvwCategorias.setOnDragListener(onItemCategoriaListViewOnDragListener);
private AdapterView.OnItemLongClickListener onItemCategoriaListViewOnItemLongClickListener = new AdapterView.OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
View.DragShadowBuilder shadowBuilder = new
View.DragShadowBuilder(view);
m_lvwCategorias.startDrag(null,shadowBuilder,m_lvwCategorias.getItemAtPosition(position),0);
return true;
}
};
private AdapterView.OnDragListener onItemCategoriaListViewOnDragListener = new AdapterView.OnDragListener() {
@Override
public boolean onDrag(View v, DragEvent event) {
final int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_MOVE:
....
break;
}
}
}
&#13;