0 votos
Hola,, tengo una pregunta… ¿como se cual es el tab que se encuentra activo? quiero pasarle valores al momento en que se active y no antes, si tienes una guia, ejemplo o lo que sea, se agradeceria mucho,
– Lo que quiero realizar es pasar datos desde un servidor a los tabs que contienen listview para mostrar una lista de datos, pero no tengo gran info de como hacerlo
preguntado por pablo Dic 22, 2014 en Android

1 Respuesta

0 votos
Mejor respuesta

Hola Pablo,
estamos trabajando en material al respecto. Mientras puedes consultar un ejemplo muy bueno en http://developer.android.com/training/implementing-navigation/lateral.html donde se hace justo lo que necesitas.

Luego el tema obtener los datos y mostrarlos dependerá de lo que necesite tu aplicación, puede ser de muchas maneras. Si nos especificas un poco más puedo guiarte :)

respondido por Jarroba [Admin] Dic 22, 2014

HOLA, gracias, estoy usando un socket y pasando objetos JSON al AyncTask, estoy modificando tu ejemplo de listas
(http://jarroba.com/listview-o-listado-en-android/),
colocando dentro de los tabs los listView, lo que ahora esto realizando es: posicionar el código dentro del AsynTask; pero para no equivocarme, ya que como la visual no es conveniente ejecutarla en segundo plano. Entonces lo que quiero es poder guarda primero la lista y despues pasarsela al Layout

Ese es el Asyntask, aun no lo escribo completo pero esta es la idea, primero es :

 public class conectTask extends AsyncTask<String,String,JSONObject> {

@Override
protected JSONObject doInBackground(String… message) {

Log.e(“Execute”, “por aka paso”);
//we create a TCPClient object and
mTcpClient = new TCPClient(new TCPClient.OnMessageReceived() {
@Override
//here the messageReceived method is implemented
public JSONObject messageReceived(String message) {
//this method calls the onProgressUpdate
publishProgress(message);
return null;
}
});
mTcpClient.run();
Log.e(“doin”,”ejecuto”);
return null;
}

@Override
protected void onProgressUpdate(String… values) {
super.onProgressUpdate(values);
String permiso = “113a7f0c601f3d56b2cf4c9cca5ce636″;
try {
JSONArray answer=new JSONArray(String.valueOf(values[0]));
String acceso=answer.getString(answer.length()-1);
Log.e(“largo JSONArray”, String.valueOf(answer.length()));
if(acceso.equals(permiso)){
answer.isNull(answer.length());
for(int i=0;i<answer.length()-1;i++){
JSONObject JPredio=new JSONObject(answer.get(i).toString());
visitas.add(new VisitaEntrada(
(Date)JPredio.get(“fecha”),
JPredio.getString(“cliente”),
JPredio.getString(“predio”),
JPredio.getString(“ubicacion”),
JPredio.getInt(“id_user”),
JPredio.getInt(“id_farm”),
JPredio.getInt(“id_solicitud”)));
}
}
else
Toast.makeText(AdminMenu.this, “acceso denegado”, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}

@Override
protected void onPostExecute(JSONObject report) {
super.onPostExecute(report);
lista.setAdapter(new Lista_Adaptador(AdminMenu.this, R.layout.input_visitas_admin, visitas){
@Override
public void onEntrada(Object entrada, View view) {
TextView fecha = (TextView) view.findViewById(R.id.tv_date_input_visit);
TextView predio = (TextView) view.findViewById(R.id.tv_farm_input_visit);
TextView cliente = (TextView) view.findViewById(R.id.tv_user_input_visit);
fecha.setText((CharSequence)/*funciona?*/ ((VisitaEntrada) entrada).getFecha());
cliente.setText(((VisitaEntrada) entrada).getCliente());
predio.setText(((VisitaEntrada) entrada).getIdFarm());

}
});
}
}

 

Vas bien, aunque hubiera puesto casi toda la lógica de obtención de datos del servidor a ArrayList en el doInBackground() para que no bloquee al usuario. Luego le pasaría el ArrayList a onPostExecute() para dibujar los datos.

Luego para saber en que Tab estás tan solo tienes que utilizar sobrescribir el método onPageSelected() que devuelve el entero del tab donde estás.
ok, entonces sacame de una duda, el onProgressUpdate provoca paros al hilo principal o algo por el estilo??

Sí, onProgressUpdate() se ejecuta sobre el hilo principal. Lo entenderás de una manera muy sencilla si te fijas en los primeros gráficos de este artículo: http://jarroba.com/asynctask-en-android/

ok, no lo habia mirado correctamente…
entonces lo ke hago en el OnProgress lo coloco en el DoInBackground y en el onProgress puedo colocar lo que puse en POST para completar todos los tabs
gracias