¿Por qué "tirar para actualizar" no se ha convertido en una característica estándar en las aplicaciones móviles?
2. Principio de implementación
Los ejemplos anteriores tienen una apariencia muy agradable, pero su esencia es la misma, es decir, un control de actualización desplegable generalmente consta de las siguientes partes:
1Encabezado
El encabezado generalmente tiene flechas desplegables, texto, barras de progreso y otros elementos. El estado del menú desplegable cambia según la distancia, mostrando así diferentes estilos.
2Contenido
Esta parte es el área de contenido. Hay muchos ejemplos en Internet de cómo agregar un encabezado directamente al ListView, pero esto tiene limitaciones, porque en muchos casos no es necesario. para utilizar ListView para mostrar datos. Colocamos la Vista que queremos mostrar contenido en uno de los contenedores. Si quiero implementar una actualización desplegable para mostrar datos en un ListView, necesito crear un ListView que pueda rotarse en mi contenedor. Manejaremos los eventos para ese contenedor (abajo, mover, arriba) y si se despliega, deslizaremos todo el diseño hacia abajo para revelar el título.
3 pies de página
El pie de página se puede utilizar para mostrar flechas desplegables, cargar automáticamente más barras de progreso, etc.
Hay algunos puntos a tener en cuenta sobre la imagen de arriba:
1. Este diseño extiende LinearLayout y está alineado verticalmente
2. la parte inferior es: encabezado, contenido, pie de página
3, el orden de arriba a abajo es: encabezado, contenido, pie de página
4: encabezado, contenido, pie de página
3, el contenido llena el control principal, y el encabezado y el pie de página son invisibles configurando el relleno superior e inferior, es decir, sacándolos de la pantalla.
4 Al desplegar, llame al método scrollTo para. deslice todo el diseño hacia abajo, para mostrar el encabezado, levantarlo es todo lo contrario de bajarlo.
5. La función que la clase derivada debe implementar es: llenar la Vista de contenido en el contenedor principal. Por ejemplo, si desea usarlo, debe agregar ListView, ScrollView, WebView, etc. . al contenedor.
6. El área roja en la imagen de arriba es el tamaño de la pantalla (estrictamente hablando, el tamaño de la pantalla aquí no es exacto, debe decirse que el área de contenido es más precisa)
3. Implementación específica
Después de comprender los principios y procesos de implementación, intentamos ser lo más concretos posible. Primero, para expandirnos mejor en el futuro y hacer que el diseño sea más razonable. abstraiga la función de actualización desplegable en una interfaz:
1. IPullToRefreshlt; T extiende Viewgt
Su definición específica es la siguiente:
[java] ver copia simple
interfaz pública IPullToRefreshlt.T extiende Viewgt; {
public void setPullRefreshEnabled(boolean pullRefreshEnabled
public void setPullLoadEnabled(boolean pullLoadEnabled); /p>
public void setScrollLoadEnabled(boolean scrollLoadEnabled);
public boolean isPullRefreshEnabled();
public boolean isPullLoadEnabled();
public boolean isScrollLoadEnabled; ();
public void setOnRefreshListener( OnRefreshListenerlt ; Tgt; refrescoListener);
public void onPullDownRefreshComplete()
public void onPullUpRefreshComplete(); >
public T getRefreshableView();
public LoadingLayout getHeaderLoadingLayout();
public LoadingLayout getFooterLoadingLayout()
public void setLastUpdatedLabel(CharSequence label)
}
super.onCreate(savedInstanceState);
mPullListView = new PullToRefreshListView(this);
// PullLoad no está disponible
mPullListView.setPullLoadEnabled(false);
// Desplázate hasta el final de carga automática disponible
mPullListView .setScrollLoadEnabled(true);
mCurIndex = mLoadDataCount
mListItems = nuevo Li;
nkedListlt; Stringgt ();
mListItems.addAll(Arrays.Arrays.AddAll
mListItems.addAll(Arrays.Arrays.AddAll); mListItems.addAll(Arrays.Arrays.AddAll);
mListItems.addAll(Arrays.Arrays.AddAll)addAll(Arrays.asList(mStrings).subList(0, mCurIndex)); p> mAdapter = new ArrayAdapterlt; Stringgt; (this, android.R.layout.simple_list_item_1, mListItems);
// Obtener el ListView real
mListView = mPullListView.getRefreshableView() ;
// Vincular datos
mListView.setAdapter(mAdapter.getRefreshableView()
mListView.setAdapter(mAdapter.getRefreshableView()).setAdapter ( mAdapter);
// Establece el detector de actualización desplegable
mPullListView.setOnRefreshListener(new OnRefreshListenerlt; ListViewgt; () {
@Override
public void onPullDownToRefresh(PullToRefreshBaselt; ListViewgt; refrescoView) {
mIsStart = true
new GetDataTask().execute();
@Override
public void onPullUpToRefresh(PullToRefreshBaselt; ListViewgt; refrescoView) {
mIsStart = false
new GetDataTask(). ejecutar ();
}
})
});
setLastUpdateTime(); / Actualización automática
mPullListView.doPullRefreshing(true, 500);
}
Esto inicializará el diseño para la actualización desplegable y llamará a setContentView para configurarlo. en la Actividad.
Una vez completada la actualización desplegable, podemos llamar a los métodos onPullDownRefreshComplete() y onPullUpRefreshComplete() para detener la actualización y la carga
5. Ejecución de resultados
La siguiente es una lista de demostración de los resultados de ejecución.
6. Descarga del código fuente
El marco para implementar este PullToRefresh no es original para mí. También me referí a muchos de código abierto y aprendí de cosas que creo que son mejores. formando el Para mis cosas, principalmente hice referencia a la siguiente demostración:
/chrisbanes/Android-> PullToRefresh Esta demostración es un buen ejemplo de cómo usar pull-to-refresh. La demostración de PullToRefresh está bien escrita, pero es demasiado complicada. Como todos sabemos, una vez que se vuelve complicada, si queremos agregar algunos requisitos, naturalmente requerirá un poco de esfuerzo para satisfacer nuestras necesidades. .