¿Cuál es la forma más limpia de lograr eso?
Lo que está buscando se conoce como el estado "activado". Para que esto funcione:
Paso n. ° 1: En res/values-v11/
, tenga un recurso de estilo que implemente activated
. Por ejemplo, para un nuevo proyecto que tiene la declaración AppTheme
definido allí, ir con algo como:
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light"></style>
<style name="activated" parent="AppTheme">
<item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>
</resources>
Paso # 2: Definir el mismo estilo en res/values/
para cualquier dispositivos más antiguos, al igual que un recurso de estilo talón, por lo referencias a ella siguen trabajando:
<resources>
<style name="AppTheme" parent="android:Theme.Light"/>
<style name="activated" parent="AppTheme"/>
</resources>
Paso # 3: en su recurso XML diseño de la fila de la ListView
, añaden style="@style/activated"
a la lista de atributos del elemento raíz
St EP # 4: Establecer el ListView
ser una lista única opción, como la siguiente línea en un ListFragment
:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
Esto se puede ver en acción en this sample project, this sample project y this sample project. Para obtener más antecedentes sobre esos dos primeros ejemplos, vea esta cuestión de forma: Complete Working Sample of the Gmail Three-Fragment Animation Scenario?
Se puede ver este enlace puede ayudar: http://stackoverflow.com/questions/5682053/listview-item-wont-stay-selected –
Puede establecer el color de fondo de la vista del elemento listview en el clic del elemento listview. –