2014-06-20 2 views
0

J'ai une activité qui charge tous les bons sur le serveur vers le téléphone du client. Dans cette activité, j'ai 2 boutons. Le premier bouton recevra tous les bons achetés par le client. La seconde obtiendra la liste de tous les bons disponibles que le client peut acheter.onListItemClick de Android ListView - Comment activer onListItemCLick et désactiver si nécessaire?

Maintenant, le problème est, je n'ai besoin que de onListItemClick pour la liste des bons disponibles (lorsqu'ils cliquent sur ces bons, ils ont l'option d'acheter). J'utilise ListView comme ListActivity. Lorsque je définis onListItemClick, l'événement s'applique également aux bons achetés.

Comment puis-je désactiver l'événement onListItemClick lorsque les clients affichent leurs propres bons et les activer lorsque les clients choisissent le bon d'achat?

Ceci est mon code de deux boutons:

public void btn_Own(View v){ 
     if(!isConnected){ 
      Toast toast = Toast.makeText(Voucher.this, "Cannot connect to  internet", Toast.LENGTH_LONG); 
      toast.show(); 
      return; 
      //finish(); 
     } 


     if(email.equals("")){ 
      Toast toast = Toast.makeText(Voucher.this, "Please log in to see your voucher!", Toast.LENGTH_LONG); 
      toast.show(); 
     }else{ 
      url = "http://wswob.somee.com/wobservice.svc/checkOwnVoucher/" + email + "/"; 
      new checkingTask().execute(); 


     } 
    } 

public void btn_Shop(View v){ 
     if(!isConnected){ 
      Toast toast = Toast.makeText(Voucher.this, "Cannot connect to internet", Toast.LENGTH_LONG); 
      toast.show(); 
      return; 
      //finish(); 
     } 

     url = "http://wswob.somee.com/wobservice.svc/showVoucher"; 
     new MyTask().execute(); 
    } 

Je suis nouveau à Android, donc je suis juste venu de savoir que je dois utiliser un adaptateur personnalisé pour le faire (pour autant que je sache) . Mais je me demande comment je peux le faire pendant que j'utilise asynctask et que je passe des paramètres différents quand j'en ai besoin pour exécuter des tâches différentes à partir du service web.

Voilà comment je reçois la liste après l'appel de service Web:

protected void onPostExecute(Void result){ 
     super.onPostExecute(result); 


     ListAdapter adapter = new SimpleAdapter(
       Voucher.this, voucherList, 
       R.layout.voucher_list, new String[]{"detail","price"}, 
       new int[]{R.id.detail, R.id.price}); 

     setListAdapter(null); 

     setListAdapter(adapter); 
    } 
+0

après un code. –

+0

référez-vous à cette réponse: http://stackoverflow.com/a/7779199/2145360 – hayi

Répondre

1

Vous devriez pouvoir utiliser setEnabled true ou false pour contrôler lorsque l'utilisateur peut effectivement cliquer sur le lien ou un bouton.

+0

Ouais, merci beaucoup, c'est le moyen le plus simple sans utiliser d'adaptateur personnalisé. 'ListView.setEnabled (false)' –

0

Vous devez utiliser le bouton click events of activity, vous avez deux boutons, onclick of frist mais juste rendre listview Itemclicklistener désactivé après avoir chargé tous les vocher du serveur et cliquer sur le second bouton qui charge les vochers disponibles seulement rendre clickviewItem clickable .

+0

Oui, je le pensais mais les informations que j'ai trouvées concernaient uniquement l'adaptateur personnalisé. Si j'utilise un adaptateur client, je ne sais pas vraiment comment implémenter async en même temps. Maintenant, je mets async dans la même classe et passe des liens différents chaque fois que je clique sur des boutons différents pour faire des tâches différentes. –

Questions connexes