2013-06-06 7 views
7

In ListView Sto usando sia setOnItemClickListener() e setOnItemLongClickListener(). Quando clicco su un oggetto funziona bene, ma quando faccio un clic lungo su un elemento a volte entrambi gli ascoltatori vengono attivati ​​contemporaneamente o lavorano allo stesso tempo. Perché?utilizzando sia setOnItemClickListener che setOnItemLongClickListener entrambi listener licenziato nello stesso momento o funziona nello stesso tempo. Perché

/** 
* 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; 
    } 
}); 
+0

Questo non dovrebbe accadere, puoi pubblicare parte del tuo codice? Se un evento viene passato a onItemLongClickListener, non dovrebbe attivare lo standard onItemClickListener. – Bobbake4

risposta

-1

prova correzione

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

e

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

a

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) 
26

aggiungere return true su onItemLongClick

+0

grazie onItemLongClick return true then onItemClick e long both listener che non funziona insieme ... !!! –

+1

funziona ...! Grazie –

0

setOnClickListener si attiva prima come asspettato, il problema inizia quando si desidera che entrambe le azioni vengano eseguite insieme, per evitare che ciò sia necessario, restituisce true; su 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; 
        } 
       }); 
Problemi correlati