2012-06-17 3 views
6

Immagino che getView() venga chiamato per ogni elemento dell'elenco, ma la mia domanda è: non possiamo mostrare la riga se i dati associati a quella riga sono nulli. Voglio farlo solo all'interno di getView().Salta una riga nella visualizzazione elenco

Per esempio:

Se gli allarmi per una persona il cui nome deve essere indicato nella visualizzazione elenco sono null.I non vogliono per visualizzare il nome di quella persona in visualizzazione elenco.

+0

perché non filtrare la persona prima di inviarla a listview? –

+0

Sì, l'ho fatto ... ma voglio sapere c'è un modo per farlo all'interno di getView() ..? – Rookie

+0

non puoi. Devi filtrare i valori prima di inviare la tua scheda alla listview – Blackbelt

risposta

20

È possibile impostare visibility di quella riga su "andato" nell'ultima riga prima di restituire la vista, che dovrebbe funzionare per voi.

Modifica: assicurarsi di impostare la visibilità su visibile se il contenuto non è nullo, altrimenti tutte le viste diventeranno "perse" quando ListView riutilizza le viste.

myView.setVisibility((myData == null) ? View.GONE : View.VISIBLE); 
+0

Non penso che so.coz ogni riga nella visualizzazione elenco abbia lo stesso ID, quindi imposterà la visibilità di tutte le righe precedenti. – Rookie

+1

Non è corretto - devi solo controllare per ogni riga se il contenuto è nullo o no e impostare la visibilità su visibile o passato. – Tim

+0

Sì, ho sbagliato..Questo ha funzionato grazie :) – Rookie

1

Hi Pals ho provato a fissare la visibilità invisibile ma ancora riesco a vedere una riga vuota in una lista così ho cambiato un po 'e ha funzionato secondo la mia necessità in modo che vale la pena condividere, se qualcuno ha bisogno di risultato simile come il mio.

Sto usando Lista come fonte di mia esigenza era di saltare alcune applicazioni in modo da ciò che ho fatto è stato ho rimosso che l'applicazione dall'elenco e dati notificati impostare cambiamento

public AppListAdapter(Context context, List<ApplicationInfo> appList) { 
     this.context = context; 
     this.appList = appList; 
     inflater = LayoutInflater.from(context); 
     localStorage = new LocalStorage(context); 
     pm = context.getPackageManager(); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
     if (convertView == null) 
       convertView = inflater.inflate(R.layout.applist_item, parent, false); 
      // Other lines of code 
     if(appName.length()==0 || getItem(position).packageName.equals("package.name.to.skip")) { 
       appList.remove(position); 
       notifyDataSetChanged(); 
     } 
    return convertView; 
} 

Linee di Preoccupazioni

appList.remove (posizione);
notifyDataSetChanged();

I vostri suggerimenti e correzioni sono sempre i benvenuti.
AzmatHunzai