如何用 OnItemLongClickListener 覆盖 OnItemClickListener
How to override OnItemClickListener with OnItemLongClickListener
我的 activity 列表视图中有 OnItemClickListener,我在其中启动另一个 activity,我还有 OnItemLongClickListener,基本上我想删除长按的 row.When 我单击列表视图 OnItemClickListener 工作正常,但是当我长按列表时仍然 OnItemClickListener 和 OnItemLongClickListener.And 我不希望 OnItemClickListener 在我长按时工作。
这就是我的代码的样子。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, CompleteInformationActivity.class);
intent.putExtra("position", "" + selected.get(position));
startActivity(intent);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "Long click happened.", Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Do you want to delete?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Item is Deleted.", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Item is not Deleted.", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
return false;
}
});
我认为您应该 return true
在您的 onItemLongClick
方法中消耗点击。检查 Android 文档 http://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener.html
我的 activity 列表视图中有 OnItemClickListener,我在其中启动另一个 activity,我还有 OnItemLongClickListener,基本上我想删除长按的 row.When 我单击列表视图 OnItemClickListener 工作正常,但是当我长按列表时仍然 OnItemClickListener 和 OnItemLongClickListener.And 我不希望 OnItemClickListener 在我长按时工作。 这就是我的代码的样子。
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, CompleteInformationActivity.class);
intent.putExtra("position", "" + selected.get(position));
startActivity(intent);
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, "Long click happened.", Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Do you want to delete?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Item is Deleted.", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Item is not Deleted.", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog = builder.create();
dialog.show();
return false;
}
});
我认为您应该 return true
在您的 onItemLongClick
方法中消耗点击。检查 Android 文档 http://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener.html