java - OnItemLongClickListener 在释放按钮时也会运行 OnItemClickListener
问题描述
它使用函数 OnItemLongClickListener 但它也在释放按钮时运行 OnItemClickListener
lv_driver.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
builder = new AlertDialog.Builder(MyActivity.this);
builder.setTitle("Be carefull ");
builder.setMessage("Do you want to delete?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
delData(i);
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
return false;
}
});
lv_driver.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(MyActivity.this, "OnItemclick show ",
Toast.LENGTH_SHORT).show();
}
});
}
当按住按钮时,它会显示对话框确认删除,但当释放按钮时,它会显示来自 toast 的文本“OnItemclick show”。如何解决?
解决方案
与其 在它return true;
中返回 false ,不如setOnItemLongClickListener
说它必须做到这一点
改变这个
lv_driver.setOnItemLongClickListener(new
AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view,
int i, long l) {
builder = new AlertDialog.Builder(MyActivity.this);
builder.setTitle("Be carefull ");
builder.setMessage("Do you want to delete?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
delData(i);
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
return false;
}
});
对此
lv_driver.setOnItemLongClickListener(new
AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view,
int i, long l) {
builder = new AlertDialog.Builder(MyActivity.this);
builder.setTitle("Be carefull ");
builder.setMessage("Do you want to delete?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
delData(i);
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.show();
return true;
}
});
推荐阅读
- youtube-api - 在 .net 中将视频上传到 youtube
- smtp - Exchange Server 2010 中外发邮件的外部 SMTP 提供程序
- sql-server - 查询两个字段之间的日期范围
- ruby-on-rails - Rails 关联 - 将项目列表与特定用户的特定事件相关联
- elasticsearch - 聚合上的弹性搜索聚合
- reactjs - Jest/Enzyme SVG Sprites 意外令牌 <
- c# - 使用模式工厂获取类型化对象
- aurelia - 数字格式转换后,Aurelia 不需要的字母出现在文本输入中。
- python - 如何使用 kubectl 在 pod 上调用事件
- ruby-on-rails - 图像未在 Heroku 中加载