Android DragSortListView setOnItemClickListener和setOnItemLongClickListener

Android DragSortListView setOnItemClickListener和setOnItemLongClickListener,android,listview,drag-and-drop,onclicklistener,Android,Listview,Drag And Drop,Onclicklistener,我从Bauer添加了DragSortListView库,它可以正常工作。我遇到的唯一问题是ItemClickListeners。因为他们什么都没做。我已经研究过了,仍然没有有效的答案 我遇到的一些解决我的问题的答案是 android:focusable="false" android:focusableInTouchMode="false" dslv:drag_start_mode="onMove" 但它不起作用 XML部分 <com.mobeta.android

我从Bauer添加了DragSortListView库,它可以正常工作。我遇到的唯一问题是ItemClickListeners。因为他们什么都没做。我已经研究过了,仍然没有有效的答案

我遇到的一些解决我的问题的答案是

    android:focusable="false"
    android:focusableInTouchMode="false"
    dslv:drag_start_mode="onMove"
但它不起作用

XML部分

<com.mobeta.android.dslv.DragSortListView
    xmlns:dslv="http://schemas.android.com/apk/lib/com.mobeta.android.dslv"
    android:layout_width="match_parent"
    android:layout_height="435dp"
    android:id="@+id/listView2"
    android:focusable="false"
    android:focusableInTouchMode="false"
    dslv:drag_start_mode="onMove"
    dslv:drag_enabled="true"
    dslv:collapsed_height="2dp"
    dslv:drag_scroll_start="0.33"
    dslv:max_drag_scroll_speed="0.5"
    dslv:float_alpha="0.6"
    dslv:slide_shuffle_speed="0.3"
    dslv:track_drag_sort="false"
    dslv:use_default_controller="true"
    dslv:sort_enabled="false"
    dslv:remove_enabled="true"
    dslv:remove_mode="flingRemove"/> 

我的碎片类

    db = new MySQLiteHelper(getActivity());
    data = db.getAllMeal();
    lv = (DragSortListView) v.findViewById(R.id.listView2);
    final ArrayAdapter<RecipeDAO> adapter = new ArrayAdapter<RecipeDAO>(getActivity(),android.R.layout.simple_list_item_1, data);
    lv.setAdapter(adapter);

    lv.setDropListener(new DragSortListView.DropListener() {
        @Override
        public void drop(int from, int to) {
            if (from != to) {
                RecipeDAO item = adapter.getItem(from);
                adapter.remove(item);
                adapter.insert(item, to);
                db.updateMealList(data);
                adapter.notifyDataSetChanged();
            }
        }
    });

    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,final int position, long id) {
            //db.deleteRecipe(data.get(position).getRecipeID());
            Crouton.makeText(getActivity()," deleted", Style.CONFIRM).setConfiguration(new Configuration.Builder().setDuration(700).build()).show();
            Toast.makeText(getActivity()," deleted", Toast.LENGTH_SHORT).show();
        }
    });
db=newmysqlitehelper(getActivity());
data=db.getAllMine();
lv=(DragSortListView)v.findViewById(R.id.listView2);
最终ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,数据);
低压设置适配器(适配器);
lv.setDropListener(新的DragSortListView.DropListener(){
@凌驾
公共作废删除(整数从,整数到){
如果(从!=到){
RecipeDAO item=adapter.getItem(来自);
适配器。移除(项目);
适配器。插入(项目,至);
数据库更新列表(数据);
adapter.notifyDataSetChanged();
}
}
});
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、最终整型位置、长id){
//db.deleteRecipe(data.get(position.getRecipeID());
Crouton.makeText(getActivity(),“deleted”,Style.CONFIRM).setConfiguration(new Configuration.Builder().setDuration(700.build()).show();
Toast.makeText(getActivity(),“deleted”,Toast.LENGTH_SHORT.show();
}
});

我想您可能需要声明一个拖动手柄。
如果您仅将此功能用于删除,那么GestureListener可能是一个更好的解决方案。

并且我假设您的侦听器在您仅使用普通的旧ListView时工作?是的,当我使用标准ListView时,侦听器工作正常。您是否曾经使用过此功能?忘了提及计划单击该项并打开对话框界面框