Используя как setOnItemClickListener, так и setOnItemLongClickListener, оба прослушивателя одновременно запускаются или работают одинаково.

В ListView я использую setOnItemClickListener() и setOnItemLongClickListener() . Когда я нажимаю на элемент, он работает нормально, но когда я долго нажимаю на элемент, иногда оба слушателя увольняются одновременно или работают одновременно. Зачем?

 /** * on click of list view item show the run time webview. */ mListViewStar.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { isHome = true; Animation translate1 = AnimationUtils.loadAnimation(Home.this, R.anim.tran_right); mRelativeLayout.setVisibility(View.GONE); mRelativeLayout.startAnimation(translate1); // mProgressBar.setVisibility(View.VISIBLE); mProgressDialog = ProgressDialog.show(Home.this, "", "Loading..."); addWebView(mArrayListJBSelectedUrls.get(arg2) .getStrSelectedWebsiteUrl().toString(), arg2); } }); /** * on long press delete item from list view */ mListViewStar.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { position = arg2; AlertDialog.Builder mAlert = new AlertDialog.Builder(Home.this); mAlert.setTitle(getString(R.string.alert)); mAlert.setIcon(R.drawable.logo); mAlert.setMessage(getString(R.string.delete_item_dialog)); mAlert.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mDataBaseMethod.open(); Log.i("Delete", "" + mArrayListJBSelectedUrls .get(position) .getStrSelectedUrlId()); mDataBaseMethod .deleteWebSites(mArrayListJBSelectedUrls .get(position) .getStrSelectedUrlId() .toString()); mArrayListJBSelectedUrls.remove(position); starBaseAdapter.notifyDataSetChanged(); mDataBaseMethod.close(); } }); mAlert.setNegativeButton(getString(R.string.no), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog alertDialog = mAlert.create(); alertDialog.show(); return true; } }); 

Добавить return true on onItemLongClick

SetOnClickListener активируется сначала как осязаемый, проблема начинается, когда вы хотите оба действия вместе, чтобы избежать этого, вам нужно вернуть true ; На OnItemLongClickListener.

 lv_frag_three.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //Groups clickedObj = (Groups) adapterView.getItemAtPosition(i); // your actions } }); }); lv_frag_three.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { return true; } }); 

Попробуйте исправить

  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 

а также

 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 

в

 public void onItemClick(AdapterView<?> arg0,final View arg1,final int arg2, final long arg3) public boolean onItemLongClick(AdapterView<?> arg0,final View arg1, final int arg2,final long arg3)