Vous pouvez définir que dans l'adaptateur de votre ListView
. Ce que vous devez faire est d'utiliser le setBackgroundResource
sur le View
que vous retournez. Permettez-moi de vous donner un bref exemple:
// lets suppose this is your adapter (which obviously has
//to be a custom one which extends from on of the main
//adapters BaseAdapter, CursorAdapter, ArrayAdapter, etc.)
// every adapter has a getView method that you will have to overwrite
// I guess you know what I'm talking about
public View getView(args blah blah){
View theView;
// do stuff with the view
// before returning, set the background
theView.setBackgroundResource(R.drawable.the_custom_background);
return theView;
}
Notez que j'utilise R.drawable.the_custom_background
, ce qui signifie que vous devez écrire un petit sélecteur de XML. Ne t'inquiète pas, c'est plus facile que ça en a l'air. Vous créez un fichier XML appelé the_custom_background.xml
dans le dossier res/drawable
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/the_background_color" />
</selector>
Avis à nouveau, je l'utilise @drawable/the_background_color
, donc finalement créer un autre drawable dans le dossier res/drawable
appelé the_background_color
:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF0000" />
</shape>
Je sais que ce semble être très salissant, mais c'est la façon Android. Vous pouvez également essayer de modifier le View
à l'intérieur du setOnItemClickListener
, mais je pense que ce n'est pas souhaitable et plus difficile à mettre en œuvre.
En implémentant cette méthode, l'arrière-plan ne sera-t-il TOUJOURS jamais 'R.drawable.the_custom_background'? Je veux seulement que ce soit 'R.drawable.the_custom_background' quand on clique sur ListItem. Je ne suis pas sûr où cette logique est, j'ai supposé qu'il serait à l'intérieur de setOnItemClickListener ... –
OK ... dans ce cas, essayez 'v.setBackgroundResource (R.drawable.the_custom_background);' à l'intérieur de la méthode 'onItemClick' . – Cristian
Cela fonctionne. Mais quand l'utilisateur clique sur un autre listitem, je veux que l'ancien listitem revienne à la couleur de fond par défaut –