【问题标题】:onDrag doesn't work with ListViewonDrag 不适用于 ListView
【发布时间】:2017-11-22 00:26:30
【问题描述】:

我有一个对 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;
        }

    };

}        
        

我在 onItemCategoriaListViewOnDragListener 中放置了一个断点,但是从列表中拖动任何项目都不会产生相关事件。

欢迎任何想法或建议。

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我认为您使用了错误的OnDragListener 尝试使用:View.OnDragListener 示例尝试此链接:“Drag and drop, ListView and item Views that miss the ACTION_DRAG_STARTED event

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多