web-dev-qa-db-fra.com

Désactiver l'événement Click sur Android Éléments ListView

J'essaie de désactiver plusieurs événements de clic sur listview, par exemple, après avoir appuyé sur le premier clic, certains médias sont lus à partir du service Web, tandis qu'ils sont lus, les autres éléments doivent être clickable==false, Après la lecture des médias, d'autres éléments de liste peuvent être cliquable.

Ce que j'essaie d'appeler setClickable(true) et setClickable(false) sur ListView Object.

25
user2143831

Dans votre méthode ArrayAdapter overide isEnabled personnalisée, comme suit

@Override
public boolean isEnabled(int position) {
    return false;
}
62
Salim

Créez votre propre sous-classe d'ArrayAdapter qui a AreAllItemsEnabled () retourne faux, et définissez isEnabled (int position) pour retourner faux pour un élément donné dans vos ceux que vous voulez désactiver .

34
Ion Aalbers

Ajoutez ceci au xml

Android:listSelector="@Android:color/transparent"
15
DropAndTrap

créer un adaptateur pour cette liste, et remplacer cette méthode

public boolean isEnabled(int position);

puis retournez false lorsque vous souhaitez désactiver le clic

3
Ben

Gérez l'événement Click à l'aide de drapeaux.

Pendant que votre lecteur multimédia fonctionne, cliquez sur false en utilisant cette méthode.

setClickable(false);

Lorsque votre lecteur multimédia est arrêté ou ne fonctionne pas ou qu'il est complètement défini, définissez ce drapeau sur la valeur par défaut.

 setClickable(true);
2
Arvind Kanjariya

avant leCréer:

private long mLastClickTimeListViewItem = 0; 

Pour éviter plusieurs clics sur les éléments ListView

Après onCreate à l'intérieur de l'écouteur pour listView, dans mon cas, ce qui suit:

    listView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            if (SystemClock.elapsedRealtime() - mLastClickTimeListViewItem < 1000){
                return ;
            }
            mLastClickTimeListViewItem = SystemClock.elapsedRealtime();

            //Do your remaining code magic below...
            ....
            ....

         } // end of onItemClick method   
    }); // end of setOnItemClickListner
2
Basher51

les réponses ci-dessus n'ont pas fonctionné pour moi, j'ai donc utilisé list.setEnabled(false) Cela a fonctionné pour moi

1
sham.y

Ou de manière simple pour vous désinscrire et vous inscrire OnItemClickListener peut être une meilleure idée.

0
CoDe