uso recyclerview recycler que getitemviewtype getitemcount ejemplo developer card and adaptador architecture mvvm

architecture - recyclerview - Responsabilidad de un ViewModel



recyclerview getitemcount (1)

Estoy construyendo una herramienta cuyo objetivo es descargar un archivo basado en algunos parámetros.

El primer paso es establecer (o recuperar) esos parámetros.

Los diferentes conjuntos de parámetros son recuperados (digamos a través de archivos de configuración) por un FileDownloadsManager: sabe exactamente qué parámetros usar para descargar el archivo correcto.

esos parámetros se almacenan en una clase, y tengo una lista de instancias de esta clase.

Eso significa que puedo descargar mi archivo con múltiples conjuntos de parámetros posibles.

Alrededor de esos ParameterSets, he creado ParametersSetsViewModels para poder mostrarlos en una lista y agregar algunas propiedades de solo lectura. Internamente, los ParametersSetsViewModels tienen una referencia a los ParametersSets subyacentes usados ​​como fuente para los miembros del Modelo de Vista.

ahora, cuando selecciono mi conjunto de parámetros, me gustaría que se descargue el archivo relacionado.

¿De quién es la responsabilidad?

Tengo la sensación de que si ViewModel está demasiado activo, al tener un método que devuelve el archivo descargado, esto sería contrario al patrón de MVVM; Cuál es su opinión sobre esto ?

Bonificación: la descarga debe ser factible en segundo plano con los métodos asincrónicos de BackgroundWorkers o WebClient.


Me parece que todos suponen que MVVM no tiene controladores ya que omitieron la C. MVVM es en realidad una variación de MVC "que simplemente agrega ViewModels".

Tal vez debería haber sido llamado MVCVM en su lugar?

ViewModels solo está disponible para descargar el código "GUI" de la vista y para contener cualquier dato para el enlace. ViewModels no debe hacer ningún procesamiento. Una buena prueba es que su ViewModel se puede probar a través de pruebas unitarias automatizadas y no tiene dependencias de fuentes de datos, etc. No deberían tener idea de dónde provienen realmente los datos (o quién los está mostrando).

Aunque puede pasarse por alto / evitarse, un Controlador es responsable de decidir qué modelo de datos mostrar y en qué vistas. ViewModel es un puente entre Modelos (la M en MVVM) y Vistas. Esto permite una autoría XAML "separada" más simple.

En respuesta a su pregunta, el procesamiento debe ser manejado por un controlador. Si necesita actualizar ViewModel para mostrar indicadores ocupados, etc., eso está bien, pero no es la Vista o el Modelo o la responsabilidad de ViewModel.