2011-12-16 3 views
0

J'ai un HeaderView dans mon ListView. En cliquant dessus, il cache le texte et montre un spinner pour récupérer des données de quelque part.Android Désactiver onclick pour listitem dans listview

Je veux désactiver le onClick après le premier clic afin qu'il ne puisse pas appeler plusieurs fois. J'ai essayé v.setClickable(false) et v.setEnabled(false), mais aucun d'eux n'a fonctionné.

Des idées?

protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    if (position == 0) { 

      ProgressBar pb = (ProgressBar) v 
        .findViewById(R.id.refresh_progress); 
      pb.setVisibility(View.VISIBLE); 
      TextView tv = (TextView) v.findViewById(R.id.load); 
      tv.setVisibility(View.GONE); 
      v.setClickable(false); 
      DownloadTask dt = new DownloadTask(v, "Old Message"); 
      dt.execute(); 

     } 
} 
+0

fournir le code ce que vous essayez .. – user370305

+0

Je pensais que la stat ment était assez simple, mais a affiché le code de toute façon. – Maurice

+0

Vous devriez désactiver le HeaderView je suppose. –

Répondre

4

Probablement mieux pour suivre juste le fait que vous avez déjà fait/a commencé FETCH avec un membre var dans votre activité, puis le tester dans votre gestionnaire onclick

private boolean wasFetchStarted = false; 

protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    if (position == 0 && ! wasFetchStarted) { 
      wasFetchStarted = true; 
      ProgressBar pb = (ProgressBar) v 
        .findViewById(R.id.refresh_progress); 
      pb.setVisibility(View.VISIBLE); 
      TextView tv = (TextView) v.findViewById(R.id.load); 
      tv.setVisibility(View.GONE); 
      v.setClickable(false); 
      DownloadTask dt = new DownloadTask(v, "Old Message"); 
      dt.execute(); 

     } 
} 
+0

Cette méthode fonctionne, je l'ai essayé, mais vous pouvez toujours cliquer sur l'élément et il met en évidence. – Maurice

+0

Oui, je suppose que ce serait vrai. Si aucune des autres lignes n'est censée être cliquable (ce dont je doute) vous pourriez essayer de définir setClickable (false) sur ListView lui-même ... mais ce n'est probablement pas ce que vous voulez. – mmeyer

Questions connexes