C'est pour tout le monde essaie de :
-Sélectionnez par programmation d'un Élément dans une liste
-Faire de ce Point de rester en Surbrillance
Je suis en train de travailler sur Android ICS, je ne sais pas si cela fonctionne pour tous les niveaux de l'Api.
D'abord créer une listview (ou l'obtenir si vous êtes déjà dans une listActivity/listFragment)
Ensuite, définissez le mode de choix de votre listview unique avec :Mylistview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Ensuite, sélectionnez par programmation, que votre article avec :Mylistview.setItemChecked(position, true);
(position étant un entier indiquant le rang de l'élément pour le sélectionner)
Maintenant, votre question est sélectionnée, mais vous pourrait voir absolument rien, car il n'y a pas de retour visuel de la sélection. Maintenant, vous avez deux options : vous pouvez soit utiliser un préconstruit listview ou personnalisé de votre liste.
1) Si vous voulez un préconstruit listview, essayez de donner une d' simple_list_item_activated_1
, simple_list_item_checked
, simple_list_item_single_choice
, etc...
Vous pouvez configurer votre listview comme ça pour l'e.g : setListAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item_activated_1, data))
à la suite de laquelle prêts à l'emploi listview choisi, vous verrez que quand vous avez sélectionné une case cochée ou le backgound changé de couleur , etc...
2) Si vous utilisez un personnalisé listview, alors vous allez définir une mise en page personnalisée qui sera utilisé dans chaque élément. Dans ce XML mise en page qui vous attribuera un sélecteur pour chaque partie de la vue en vous ligne qui ont besoin d'être changé lorsqu'il est sélectionné.
Disons que lorsque sélectionné, vous voulez que votre ligne pour modifier la couleur du texte et la couleur de l'arrière-plan. Votre XML mise en page peut être écrit comme :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/menu_item_background_selector"
android:orientation="horizontal" >
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textColor="@drawable/menu_item_text_selector" />
Maintenant, dans le dossier drawable vous créez menu_item_background_selector.xml et menu_item_text_selector.xml.
menu_item_text_selector.xml :
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"
android:color="#FFF">
</item>
<item android:state_pressed="true"
android:color="#FFF">
</item>
<item android:state_pressed="false"
android:color="#000">
</item>
</selector>
Le texte est blanc lorsqu'il est sélectionné.
Puis faire la même chose pour votre arrière-plan: (n'oubliez pas que vous n'êtes pas obligé d'utiliser la couleur, mais vous pouvez également utiliser un drawable)
menu_item_background_selector.xml :
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"
android:color="#0094CE">
</item>
<item android:state_pressed="true"
android:color="#0094CE">
</item>
<item android:state_pressed="false"
android:color="#ACD52B">
</item>
</selector>
Ici le fond est bleu lorsqu'il est sélectionné et vert quand il n'est pas sélectionné.
Le principal élément qui me manquait était android:state_activated
. Il y a en effet de (trop) nombreux états : activé,pressé,concentré,vérifié,sélectionné...
Je ne sais pas si l'exemple que j'ai donné avec android:state_activated
et android:state_pressed
est la meilleure et la plus propre mais il semble fonctionner pour moi.
Mais je n'ai pas besoin de faire ma propre classe, de façon à obtenir un Personnalisé CheckableRelativeLayout (qui était sale et effrayant), ni que j'ai utilisé CheckableTextViews. Je ne sais pas whyothers utilisé de telles méthodes, il peut-être dépend de l'Api de niveau.