Tal como me solicitaba oconnell_2k4 recientemente voy a dejar un ejemplo de como poner utilizar en un ListActivity de Android un ProgressDialog mientras se obtienen los datos para cargarlos en el ListView, se pueden obtener desde una base de datos local o desde una fuente externa usando por ejemplo una petición HTTP que retorne objetos JSON.
protected ProgressDialog cargarClientesProgressDialog = null;
protected void loadMyData(){
cargarClientesProgressDialog = ProgressDialog.show(ClientesListView.this,
"", getResources().getString(R.string.cliente_listview_loading), true, false);
// usar un hilo diferente para obtener los clientes
Thread thread = new Thread(null, cargarClientesEnBackgroundProcess,
"CargarClientesThread");
// Iniciar el hilo que carga los clientes
thread.start();
}
protected Runnable cargarClientesEnBackgroundProcess = new Runnable() {
public void run(){getClientes();}
};
protected String QUERY = null;
protected void getClientes() {
if(this.QUERY != null && this.QUERY.length() > 0){
clientesList = clientesDbAdapter.filtrarClientes(this.QUERY);
} else {
clientesList = clientesDbAdapter.getListClientes();
}
handler.post(updateClientesListView);
}
protected Runnable updateClientesListView = new Runnable() {
@Override
public void run() {loadClientes();}
};
protected void loadClientes(){
this.clienteAdapter = new ClienteAdapter(this, R.layout.list_item_cliente,
new ArrayList());
setListAdapter(this.clienteAdapter);
if (clientesList != null && clientesList.size() > 0) {
clienteAdapter.notifyDataSetChanged();
for (int i = 0; i <>
clienteAdapter.add(clientesList.get(i));
}
if(cargarClientesProgressDialog != null) {
cargarClientesProgressDialog.dismiss();
}
clienteAdapter.notifyDataSetChanged();
}
Espero que pueda ser útil y siento la demora pero he estado algo liado.