Android 使用拖动排序列表视图(DSLV)时,不会触发setOnItemLongClickListener和setOnItemClickListener

Android 使用拖动排序列表视图(DSLV)时,不会触发setOnItemLongClickListener和setOnItemClickListener,android,listview,drag-and-drop,draggable,onitemclicklistener,Android,Listview,Drag And Drop,Draggable,Onitemclicklistener,我正在使用Carl Bauer的优秀拖动排序列表视图(https://github.com/bauerca/drag-sort-listview)以实现启用拖动排序的listview。但是,我的要求不是在列表上需要一个拖动句柄,而是允许用户使用该项本身拖动列表项 通过将@id/drag属性设置为列表项本身,我已经使该部分正常工作。 但是,它的副作用是不响应itemClick和itemLongClick事件 有没有办法让项目点击/长点击在没有单独可拖动布局的情况下工作 作为参考,我的代码如下所示-

我正在使用Carl Bauer的优秀拖动排序列表视图(https://github.com/bauerca/drag-sort-listview)以实现启用拖动排序的listview。但是,我的要求不是在列表上需要一个拖动句柄,而是允许用户使用该项本身拖动列表项

通过将@id/drag属性设置为列表项本身,我已经使该部分正常工作。 但是,它的副作用是不响应itemClick和itemLongClick事件

有没有办法让项目点击/长点击在没有单独可拖动布局的情况下工作

作为参考,我的代码如下所示-

ListView.xml:

<com.mobeta.android.dslv.DragSortListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dslv="http://schemas.android.com/apk/res/com.myproject"
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    dslv:collapsed_height="1dp"
    dslv:drag_scroll_start="0.33"
    dslv:max_drag_scroll_speed="0.5" /> 

ItemView.xml:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="@dimen/list_item_height"
  android:orientation="horizontal">
  <CheckBox 
      android:id="@+id/check_box"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:gravity="center_vertical"/>
  <TextView
    android:id="@+id/drag"
    android:layout_width="0dp"
    android:layout_height="fill_parent"
    android:padding="@dimen/list_padding"
    android:gravity="center_vertical" />
</LinearLayout>

Activity.java:

    DragSortListView listView = (DragSortListView) view.findViewById(R.id.list);

    listView.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            Toast.makeText(arg0.getContext(), ((TextView)arg1).getText(), Toast.LENGTH_SHORT).show();
            return false;
        }
    });

    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> listView, View itemView, int index,
                long id) {
            Toast.makeText(getView().getContext(), ((TextView)itemView).getText(), Toast.LENGTH_SHORT).show();
        }
    });
DragSortListView listView=(DragSortListView)view.findViewById(R.id.list);
setOnItemLongClickListener(新的OnItemLongClickListener(){
@凌驾
长单击(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
Toast.makeText(arg0.getContext(),((TextView)arg1.getText(),Toast.LENGTH_SHORT.show();
返回false;
}
});
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView listView、View itemView、int index、,
长id){
Toast.makeText(getView().getContext(),((TextView)itemView).getText(),Toast.LENGTH_SHORT.show();
}
});
作为奖励,如果任何人能够在单击/长单击之外帮助启用多个选择,将不胜感激


谢谢

要能够在列表中使用OnItemClickOnItemLongClick,您需要将此参数设置为
com.mobeta.android.dslv.DragSortListView
布局

dslv:drag_start_mode="onMove"