2012-06-17 37 views
6

Supongo que se llama getView() para cada elemento de la lista, pero mi pregunta es: ¿No podemos mostrar la fila si los datos asociados con esa fila son nulos? Quiero hacer esto solo dentro de getView().Omita una fila en la vista de lista

Por ejemplo:

Si las alertas para una persona cuyo nombre es el que se muestra en la vista de lista son null.I no quieren mostrar el nombre de esa persona en la vista de lista.

+0

¿Por qué no filtra a la persona antes de enviarla a la lista de la lista? –

+0

Sí, lo he hecho ... pero quiero saber si hay alguna forma de hacerlo dentro de getView() ..? – Rookie

+0

no puedes. Debe filtrar los valores antes de enviar su adaptador a listview – Blackbelt

Respuesta

20

Puede establecer el visibility de esa fila en "anterior" en la última línea antes de devolver la Vista; eso debería funcionar para usted.

Editar: Asegúrese de establecer la visibilidad como visible si el contenido no es nulo; de lo contrario, todas las vistas se "perderán" cuando ListView reutilice las vistas.

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

No creo que cada fila en la vista de lista tenga la misma identificación, por lo que establecerá la visibilidad de todas las filas anteriores. – Rookie

+1

Eso no es correcto; solo tiene que verificar cada fila si el contenido es nulo o no y establecer la visibilidad como visible o no. – Tim

+0

Sí, estoy equivocado ... Esto funcionó, gracias :) – Rookie

1

Hi Pals He intentado configurar la visibilidad a invisible, pero todavía puedo ver una fila vacía en una vista de lista, así que cambiar un poco y funcionó de acuerdo a mi necesidad por lo que vale la pena compartir si alguien necesita resultado similar como mía.

estoy usando Lista como fuente de mi requisito era saltarse algunas aplicaciones así que lo que hice fue quitado de que la aplicación de la Lista y datos notificados establecer el cambio

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; 
} 

Líneas de Preocupación

appList.remove (posición);
notifyDataSetChanged();

Sus sugerencias y correcciones son siempre bienvenidas.
AzmatHunzai

Cuestiones relacionadas