Dans mon application je veux faire quelque chose de similaire à l'application gmail sur les tablettes, à gauche pour avoir la liste des éléments et à droite pour avoir un fragment avec le contenu de cet élément, comme pour l'application gmail ce contenu est téléchargé après sélection. Après avoir cliqué sur un élément, je veux qu'il reste en surbrillance jusqu'à ce que, bien sûr, je change la sélection. J'ai atteint un point où cela fonctionne mais seulement si je clique deux fois sur le même élément, donc la première fois que je clique, la sélection fonctionne et ensuite l'élément retourne à son état 'par défaut' et si je clique à nouveau dessus, le sélecteur (pour l'état sélectionné) est visible.
Voici ce que j'ai jusqu'à présent :
1) Le sélecteur (listitem_background.xml)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/solid_white" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/listitem_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/listitem_focused" android:state_selected="true"/>
</selector>
2) Pour la disposition linéaire supérieure de l'élément de liste :
android:background="@drawable/listitem_background"
(J'ai essayé de le définir comme sélecteur de liste, aussi)
3) Voici le ListView :
<ListView
android:id="@+id/my_list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:drawSelectorOnTop="true"
android:fadeScrollbars="true"
android:fastScrollEnabled="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:scrollbarFadeDuration="100"
android:scrollbars="vertical" />
4) Dans la partie code, j'ai essayé de jouer avec ça :
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
view.setSelected(true);
...
}
[EDIT] En fait, j'ai remarqué que la sélection est perdue après le commit du fragment dans la partie droite de l'écran. Si je ne committe pas le fragment, ça marche comme sur des roulettes... Je pense que j'ai besoin de quelque chose comme ça dans le sélecteur :
<item android:drawable="@drawable/listitem_focused" android:state_activated="true" android:state_focused="false"/>
Mais manifestement pas cette...