我正在尝试在listview行上实现onItemLongClickListener和onItemClickListener事件,但问题是当我longPress listview行并释放它时,两个事件同时被调用。请给我解决方案我该如何实现。
这是我的代码
listregional.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
final CharSequence[] dialogregion = {"Edit","Delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Pilih Menu");
builder.setItems(dialogregion, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int region) {
switch (region){
case 0:
Toast.makeText(getActivity(),"Edited",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(getActivity(),"Deleted",Toast.LENGTH_SHORT).show();
break;
}
}
});
return false;
}
});
请帮帮我
答案 0 :(得分:1)
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// your code
return true
}
return true
代替return false
会阻止点击事件继续。
答案 1 :(得分:0)
您必须通过返回true
向其他侦听器发出消息,表明已调度事件已被使用答案 2 :(得分:0)
返回boolean true
:
listregional.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
final CharSequence[] dialogregion = {"Edit","Delete"};
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Pilih Menu");
builder.setItems(dialogregion, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int region) {
switch (region){
case 0:
Toast.makeText(getActivity(),"Edited",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(getActivity(),"Deleted",Toast.LENGTH_SHORT).show();
break;
}
}
});
return true;
}
});
答案 3 :(得分:0)
处理长按事件与处理点击基本相同,只是您返回一个布尔值,指定Android是否应继续传播点击事件。
lv.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> av, View v, int pos, long id){
return onLongListItemClick(v,pos,id);
}
});
如果您的长按方法返回true,那么您告诉Android您已处理该事件。如果您的方法返回false,Android仍会调用其他处理程序,例如onItemClick处理程序。
protected boolean onLongListItemClick(View v, int pos, long id) {
Log.i(TAG, "onLongListItemClick id=" + id);
return true;
}
所以更改代码的最后一行以返回TRUE。