Refrescar Activity o List (Lo que sea mejor) Android

publicado por: Anonymous

Buenas tengo el siguiente activity que me crea una lista con datos traídos por php y mysql.
Como puedo hacer para que esa listase actualice cada cierto tiempo o refrescar el activity sin tener que usar el boton algo asi como un meta refresh.
Muchas gracias.

public class PreAsignado extends AppCompatActivity {
ListView listado;
Button Volver;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_pre_asignado);
    listado = (ListView) findViewById(R.id.listView);
    ObtDatos();
    Volver = (Button)findViewById(R.id.btnVolver);
    Volver.setOnClickListener(new View.OnClickListener(){

       @Override
        public void onClick(View v) {
            Intent btnAceptar = new Intent(PreAsignado.this, MainActivity.class);
            startActivity(btnAceptar);
        }
    });
}
@Override
public void onBackPressed() {
}
public void ObtDatos(){
    AsyncHttpClient client = new AsyncHttpClient();
    String url = DIRECCION + "getDataPreAsignados.php";
    SharedPreferences sharedPreferences = getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    String email = sharedPreferences.getString(Config.EMAIL_SHARED_PREF,"No disponible");
    RequestParams parametros = new RequestParams();
    parametros.put("email", email);
    client.post(url, parametros, new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
            if (statusCode == 200){
                CargarLista(obtDatosJSON(new String(responseBody)));
            }
        }
        @Override
        public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
        }
    });
}
public void CargarLista(final ArrayList<Pedido> datos){
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
    for (int i=0;i<datos.size();i++)
    {
        adapter.add(datos.get(i).toString());
    }
    listado.setAdapter(adapter);
    listado.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        public void onItemClick(AdapterView<?> parent, View view, int position, long id){
            Intent intent = new Intent(view.getContext(),Detalle.class);
            intent.putExtra("id",datos.get(position).getId());
            intent.putExtra("barrio",datos.get(position).getBarrio());
            intent.putExtra("direccion",datos.get(position).getDireccion());
            intent.putExtra("pisoDepto",datos.get(position).getPisoDepto());
            intent.putExtra("cliente",datos.get(position).getCliente());
            intent.putExtra("telefono",datos.get(position).getTelefono());
            intent.putExtra("cadete",datos.get(position).getCadete());
            intent.putExtra("pagaCon",datos.get(position).getPagaCon());
            intent.putExtra("estado",datos.get(position).getEstado());
            startActivity(intent);
        }
    }
    );
}
public ArrayList<Pedido> obtDatosJSON(String response){
    ArrayList<Pedido> listadoArray = new ArrayList<Pedido>();
    try{
        JSONArray jsonArray = new JSONArray(response);
        Pedido p;
        for (int i = 0; i < jsonArray.length();i++){
            p = new Pedido(
                    Integer.parseInt( jsonArray.getJSONObject(i).getString("id")),
                    jsonArray.getJSONObject(i).getString("barrio"),
                    jsonArray.getJSONObject(i).getString("direccion"),
                    jsonArray.getJSONObject(i).getString("pisoDepto"),
                    jsonArray.getJSONObject(i).getString("cliente"),
                    jsonArray.getJSONObject(i).getString("telefono"),
                    jsonArray.getJSONObject(i).getString("cadete"),
                    jsonArray.getJSONObject(i).getString("pagaCon"),
                    jsonArray.getJSONObject(i).getString("estado")
            );
            listadoArray.add(p);
        }
    }catch(Exception e){
        e.printStackTrace();
    }
    return listadoArray;
}
}

Disculpen pero soy muy nuevo con esto, estoy buscando onResume como me comentan, lo uso y el codigo me da error y al arreglarlo queda asi:

public static final long PERIODO = 60000; // 60 segundos (60 * 1000 millisegundos)
private Handler handler;
private Runnable runnable;



protected void onResume(Bundle savedInstanceState){
    super.onResume();
    handler = new Handler() {
        @Override
        public void publish(LogRecord record) {

        }

        @Override
        public void flush() {

        }

        @Override
        public void close() throws SecurityException {

        }
    };
    runnable = new Runnable(){
        @Override
        public void run(){
            handler.postDelayed(this, PERIODO);
        }
    };
    handler.postDelayed(runnable, PERIODO);
}

postDelayed me dice:

Error:(74, 24) error: cannot find symbol method
postDelayed(,long)

Me guían por favor que buscar para comprender lo que me esta pasando y poder implementarlo sin errores? Muchas gracias

solución

Si tienes tu método para obtener datos: ObtDatos() , el cual llama a su vez la carga el Activity con los datos actualizados CargarLista(), puedes usar un handler que mande llamar el primero.

Como ejemplo este proceso llamaría ObtDatos() cada 60000 millisegundos (1 minuto)

   final long EXECUTION_TIME = 60000; // 1 minuto

    handler.postDelayed(new Runnable() {

        @Override
        public void run() {

            ObtDatos();

            handler.postDelayed(this, EXECUTION_TIME);
        }
    }, EXECUTION_TIME);
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *