ListView Android ne permet pas au sélecteur de fonctionner ni aux sélections
-
14-11-2019 - |
Question
D'accord, je sais que cela peut ressembler à n'importe quel autre problème concernant les problèmes ListView et ListActivity, mais ce n'est pas le cas, je vais devenir fou comme je l'ai fait la semaine dernière et j'ai continué à chercher dans tous les messages pour trouver une solution à cela qui pourrait aider. moi.Déjà essayé Arrière-plan de l'élément ListView via un sélecteur personnalisé et GetView contre.BindView dans un CursorAdapter personnalisé ? tous les autres sites de blogs possibles...
D'accord, le problème, ma listView pour un 1 n'autorisera pas la sélection/déclenchement des événements et 2.ne modifiera pas la mise en surbrillance de la ligne lorsqu'un élément est cliqué.j'ai une norme TestActivity
extension ListActivity
et j'ai implémenté un Custom TestCursorAdapter extends SimpleCursorAdapter
Maintenant, du côté XML des choses que j'ai test_list_view.xml
et le deuxième row_view.xml
Maintenant, j'ai suivi les réponses mentionnées ci-dessus et j'ai mis en œuvre selector
comme row_selector.xml
.Mais le problème est que pour l’une des lignes, n’accepte aucun événement de clic ou de focus.J'ai implémenté un toast de base pour indiquer s'il se passe quelque chose
@Override
protected void onListItemClick(ListView l, View v , int postion, long idontnow){
Toast.makeText(getApplicationContext(), "Hello World", Toast.LENGTH_SHORT ).show();
}
partie de test_list_view.xml
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:cacheColorHint="#00000000"
android:focusable="true"
android:listSelector="@color/row_selector"
android:background="@color/Transparent"/>
partie de selector.xml (essentiellement copié et collé à partir de l'un des liens mentionnés ci-dessus)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false"
android:drawable="@color/Transparent" />
<item
android:state_focused="true"
android:state_enabled="false"
android:state_pressed="true"
android:drawable="@color/green" />
<item
android:state_focused="true"
android:state_enabled="false"
android:drawable="@color/green" />
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@color/blue" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@color/blue" />
<item
android:state_focused="true"
android:drawable="@color/green" />
<item
android:state_selected="true"
android:drawable="@color/blue" />
<item
android:drawable="@color/Transparent" />
</selector>
J'ai suivi toutes les options dont je suis conscient et toujours rien. La seule différence majeure, ce sont les gars que je n'utilise pas getView
à la place, j'utilise bindView
.
Toute aide les gars sera très appréciée.
Merci d'avance.
Sanj
La solution
Je vous suggère de supprimer le android:focusable="true"
du ListView
.
De plus, vous pouvez utiliser le selector
comme couleur d'arrière-plan des éléments affichés dans le ListView
.Assurez-vous également que ces éléments n'appellent pas onClick
ou onTouch
ou quelque chose comme ça, et laissez le ListView
gérer les événements de clic.
J'espère que ça aide
MODIFIER:
pour votre problème de sélection de l'article, utilisez
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
yourMethod();
}
});
Autres conseils
suite à la suggestion et au message de raukodraugListView OnItemClickListener ne répond pas ?
Un autre fait mentionné bindView
méthode, j'ai utilisé
view.setClickable(true);
view.setFocusable(true);
le type de clic sur l'élément fonctionne, uniquement si vous cliquez sur la région marquée en surbrillance en jaune et le ImageView
.Je devrais pouvoir comprendre ça merci,
Édité
Oh *%#$ Résolu, nécessaire pour définir les RelativeLayouts Add State from Children = true;