Autore Topic: Cambiare il background di un item di una listview  (Letto 824 volte)

Offline Webman

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid Metal
  • Sistema operativo:
    Windows 7
Cambiare il background di un item di una listview
« il: 09 Marzo 2012, 12:35:11 CET »
0
Salve,
dopo aver popolato una ListView tramite SimpleAdapter, voglio cambiare il colore di background di un item a mia scelta. Per fare questo ho semplicemente provato in questo modo:

Codice (Java): [Seleziona]
int positionItem = 0;
listView.setSelection(positionItem);
listView.getChildAt(positionItem).setBackgroundColor(Color.WHITE);

Ma l'eccezzione restituita è la seguente:
"03-09 12:27:53.699: E/AndroidRuntime(10450): java.lang.RuntimeException: Unable to start activity ComponentInfo{it.nide/it.nide.sw.pokertime.r.VisualizzaStrutturaActivity}: java.lang.NullPointerException"

Infatti, listView.getChildCount() restituisce 0. Perchè risultano 0 figli anche se gli elementi della lista sono caricati correttamente?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Cambiare il background di un item di una listview
« Risposta #1 il: 09 Marzo 2012, 12:49:25 CET »
0
A causa dell'implementazione specifica delle listview in android (particolarmente ottimizzate), non puoi accedere esternamente alla visualzzazione di un elemento arbitrario. La listview usa un numero di elementi-riga pari a quello delle righe effettivamente visualizzate in una schermata (forse qualcuna un più) e le ricicla. Ricicla nel senso che quando una riga esce dalla schermata, viene riusata per visualizzare quella che entra dall'altra parte.

La faccio breve: l'aspetto di un elemento-riga specifico lo puoi cambiare sono quando appare nella schermata e lo fai con l'implementazione personalizzata dell'adapter, Custom Adapter.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Webman

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Acer Liquid Metal
  • Sistema operativo:
    Windows 7
Re:Cambiare il background di un item di una listview
« Risposta #2 il: 09 Marzo 2012, 13:04:02 CET »
0
Grazie per la risposta. Ora mi do uno sguardo al Custom Adapter, però quest'ultima parte non mi è chiara:

La faccio breve: l'aspetto di un elemento-riga specifico lo puoi cambiare sono quando appare nella schermata e lo fai con l'implementazione personalizzata dell'adapter, Custom Adapter.

Avendo usato listView.setSelection(positionItem), l'elemento mi appare nella schermata, quindi per quanto hai scritto e per quanto ho capito, dovrei essere in grado di modificare il suo aspetto..ma non è così. Ho capito male?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Cambiare il background di un item di una listview
« Risposta #3 il: 09 Marzo 2012, 13:36:37 CET »
0
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store