android ListView mListView.getChildAt(i) est nul, comment le résoudre?
J'ai créer le code ci-dessous:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,
long id) {
for (int i = 0; i < mListView.getCount(); i++) {
View callLogView = mListView.getChildAt(i);
mRelativeLayout = (LinearLayout)callLogView.findViewById(R.id.myShow);
if(i == position){
if(mRelativeLayout.getVisibility() == View.GONE){
mRelativeLayout.setVisibility(View.VISIBLE);
}
else{
mRelativeLayout.setVisibility(View.GONE);
}
}else{
mRelativeLayout.setVisibility(View.GONE);
}
}
}
});
Je veux réaliser une fonction comme lorsque je clique sur un élément de Listview
, il affiche une vue, et les autres éléments de contrôle Listview être caché. Mais mListView.getChildAt(i)
aura le pointeur null après excéder mListView.getChildCount()
.
Comment résoudre ce problème? Merci à l'avance!
double possible de ListView getChildAt retourner null visibles enfants
double possible de Android: l'Accès de l'enfant vues à partir d'une ListView
double possible de Android: l'Accès de l'enfant vues à partir d'une ListView
OriginalL'auteur DaringLi | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
AdapterView.getCount() retourne le nombre d'éléments de données, qui peut être plus grand que le nombre de vues visibles, c'est pourquoi vous obtenez exception de pointeur null, parce que vous essayez de trouver des points de vue qui n'existent pas dans le visible en cours des éléments ListView.
Pour résoudre ce problème, vous devrez d'abord trouver le premier élément visible dans la liste à l'aide de
getFirstVisiblePosition()
et le dernier élément visible à l'aide degetLastVisiblePosition()
. Changer la pour la condition de boucle:u n'ont pas de mentionner sur les deux pages de la liste dans votre question, quand j'ai répondu .
ce que la réponse que vous avez donnée. Je vous remercie..
mais il est en écoute. Je préfère utiliser "vue" paramètre de la listitemclick et jeté respectifs de mise en page et puis faire de la logique.
OriginalL'auteur ρяσѕρєя K
vous ne pouvez pas mettre en onItemClick.
Que vous pouvez accéder uniquement visible à l'enfant de ne pas tous les enfants.
Ce que vous pouvez faire est sur onItemClick
vous pouvez envoyer la position de l'adaptateur
et ensuite définir la logique de getView trop changer de vue
et mise à jour de la carte dans la liste, ou de notifier les changements.
J'ai utilisé cela pour maintenir l'état des cases à cocher en vue différents cas. J'ai récupéré l'état à partir d'un tableau de booléens de l'activité s'est ensuite passé de la matrice à un substituée constructeur de la carte, que j'ai ensuite utilisé pour mettre à jour le CheckedTextViews dans ma ListView. Quand j'ai essayé de les récupérer et de mettre à jour le CheckedTextViews de l'activité, ils ont été de montrer la valeur null.
OriginalL'auteur Nimish Choudhary