Android 拖动排序列表视图项单击不起作用
我使用图书馆。它工作得很好-从我的listview中拖动和删除项目,但我还想单击listview项目。当我设置OnClickListener时,它不起作用。有什么问题吗?对不起,我英语不好 我的片段:Android 拖动排序列表视图项单击不起作用,android,listview,drag-and-drop,onclick,onitemclicklistener,Android,Listview,Drag And Drop,Onclick,Onitemclicklistener,我使用图书馆。它工作得很好-从我的listview中拖动和删除项目,但我还想单击listview项目。当我设置OnClickListener时,它不起作用。有什么问题吗?对不起,我英语不好 我的片段: 专用DragSortListView listView; 专用适配器; 私人视野; @凌驾 创建视图上的公共视图(布局、充气机、视图组容器、, Bundle savedInstanceState){ MyLog.d(标记“onCreateView”); initAndStartSession(ge
专用DragSortListView listView;
专用适配器;
私人视野;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
MyLog.d(标记“onCreateView”);
initAndStartSession(getActivity(),APP_Parameters.BugSense);
视图=充气机。充气(R.layout.fragment\u make\u single\u bet,
货柜(虚假);;
listView=(DragSortListView)view.findViewById(R.id.makeBetList);
setRemovelListener(这个);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
Toast.makeText(getActivity(),“单击:”+位置,Toast.LENGTH\u SHORT.show();
}
});
cursor=dbHelper.getAllBets();
adapter=newmakesinglebetadapter(getActivity(),cursor,3,dbHelper);
setAdapter(适配器);
返回视图;
}
@凌驾
公共无效删除(int-which){
游标游标游标ID=(游标)(listView.getItemAtPosition(which));
String id=cursorId.getString(游标
.getColumnIndex(DBHelper.COL_BET_ID));
dbHelper.deleteBetById(id);
swapCursor(dbHelper.getAllBets());
}
我的XML:
....
....
如果我在我的适配器中添加ClickListener,它可以正常工作,但我无法拖动列表项请尝试将这些项添加到listview行:
android:focusable="false"
android:focusableInTouchMode="false"
这对我来说很有效,我一直在点击列表中的项目,它将触动事件,所以我的代码如下。我只想执行Onclick,而不是Ontouch,只是重写该方法,什么也不做
private DragSortListView list;
list = view.findViewById(android.R.id.list);
list.addHeaderView(footerView);
list.setFocusable(false);
list.setHeaderDividersEnabled(false);
list.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Toast.makeText(getActivity(),"its a touch" , Toast.LENGTH_LONG).show();
Log.d("stack", "TOUCH EVENT");
return false;
}
});
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(getActivity(),"Position :"+position+" ListItem : " +id , Toast.LENGTH_LONG).show();
Log.i("edit recipe click", "clicked");
EditableIngredient ingredient = (EditableIngredient) parent.getItemAtPosition(position);
host.handleIngredientSelected(ingredient);
}
});
return view;
}
私有DragSortListView列表;
list=view.findviewbyd(android.R.id.list);
list.addHeaderView(页脚视图);
list.setFocusable(false);
list.setHeaderDivisEnabled(false);
list.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
Toast.makeText(getActivity(),“its a touch”,Toast.LENGTH_LONG.show();
Log.d(“堆栈”、“触摸事件”);
返回false;
}
});
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(getActivity(),“Position:+Position+”列表项:“+id,Toast.LENGTH_LONG).show();
Log.i(“编辑配方单击”,“单击”);
EditableComponent=(EditableComponent)父级.getItemAtPosition(position);
主持人:handleIngredientSelected(成分);
}
});
返回视图;
}
我的Xml看起来像
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.mobeta.android.dslv.DragSortListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:choiceMode="singleChoice"
app:drag_handle_id="@id/drag_handle"
app:float_background_color="@android:color/white"
/>
</FrameLayout>
尝试使用onClick而不是OnItemClick。@Aashir E/AndroidRuntime(4833):java.lang.RuntimeException:不要为AdapterView调用setOnClickListener。您可能希望使用setOnItemClickListener,而不是尝试将这些添加到您的listview行:android:focusable=“false”android:focusableInTouchMode=“false”@Aashir是的,现在一切正常。非常感谢。如果你发布这个类似的答案-我会接受它的完美工作,但我如何才能在我的适配器中添加McClickListener?