Mi ListView tiene dos tipos de vistas. ¿Como administrar?

Mi aplicación de gestión de eventos tiene dos tipos de vistas en la vista de lista: una pequeña vista de texto simple para eventos no tan importantes y una vista compleja creada con unFrameLayout.

en elonCreateView() del adaptador, devuelvo estas vistas según la naturaleza del evento.

if(convertView == null){
  if(important)
   // inflate the complex view
  else
   // inflate the simpler view
}  

Todo esto es bueno cuandoconvertView es nulo. Debido al reciclaje de la vista en Android, puede suceder que elconvertView devuelto a mí se recicla de la vista más simple y ahora tengo que mostrar la vista más grande. Una solución tonta es inflar nuevas vistas todo el tiempo. Sin embargo, esto matará el rendimiento.

Otra forma es tener invisibleTextViews en ambos (visibility=gone) con valores predefinidos y según el valor que contengan, puedo inflar las vistas. Para mí, esto parece un truco en lugar de una solución real.

¿Cuál es la forma correcta de manejar esta situación?