J'ai un ListView que je remplis avec les valeurs de ma base de données. Si la base de données est vide, je règle le premier élément de ListView sur "Aucune donnée". Je veux désactiver en cliquant sur cet élément. J'ai utilisé ArrayAdapter. J'ai essayé de créer areAllItemsEnabled, isEnabled false, mais cela ne servait à rien. Même si je règle isClickable et setEnabled de ListView sur false, cela ne sert à rien. Et je mets le code pour OnItemClickListener dans la condition else, même si cela n'empêche pas l'élément de liste d'être cliquable. Est-ce que quelqu'un a une solution alternative? Merci!
Dans votre ArrayAdapter personnalisé, utilisez la fonction isEnabled pour renvoyer false:
@Override
public boolean isEnabled(int position) {
return false;
}
travaille toujours pour moi.
tout le plus facile! list.setEnabled (false)
Vous pouvez définir la vue vide comme indiqué et elle sera traitée automatiquement:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingLeft="8dp"
Android:paddingRight="8dp">
<ListView Android:id="@Android:id/list"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#00FF00"
Android:layout_weight="1"
Android:drawSelectorOnTop="false"/>
<TextView Android:id="@Android:id/empty"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#FF0000"
Android:text="No data"/>
</LinearLayout>
créez un adaptateur pour cette liste, et remplacez cette méthode
public boolean isEnabled(int position);
puis retournez false
lorsque vous souhaitez désactiver le clic
Essayez de définir ces deux attributs sur le ListView:
Android:listSelector="@Android:color/transparent"
Android:cacheColorHint="@Android:color/transparent"
J'ai fait comme ça selon mes besoins j'espère que cela peut vous aider
@Override
public boolean isEnabled(int position) {
if(data.get(position).isClickable==false)
{
return false;
}
return super.isEnabled(position);
}
Peut-être pourriez-vous utiliser une instruction if pour vérifier le contenu de l'entrée listview dans OnClick, si elle contient 'Aucune donnée'