package com.geored.gui; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import com.geored.rest.R; import com.geored.rest.ServicioRestUsuarios; import com.geored.rest.data.Oferta; import com.geored.rest.exception.RestBlowUpException; import com.geored.rest.exception.UnauthorizedException; public class OfertasActivity extends GenericActivity { private String value; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); Bundle extras = getIntent().getExtras(); boolean externo = extras.getBoolean("externo"); if (extras != null && !externo) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.activity_compras, menu); value = extras.getString("ofertas_id"); } } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); Oferta oferta = (Oferta) getListAdapter().getItem(info.position); switch (item.getItemId()) { case R.id.menu_comprar: goToActivity(ComprarActivity.class, oferta.getId(), oferta.getIdImagen()); return true; default: return super.onContextItemSelected(item); } } @Override protected void loadVista() { setContentView(R.layout.activity_ofertas); Bundle extras = getIntent().getExtras(); if (extras != null) { value = extras.getString("ofertas_id"); } loadListView(); registerForContextMenu(getListView()); } protected void goToActivity(Class<? extends Activity> activityClass, Integer idOferta, Integer idImagen) { Intent newActivity = new Intent(OfertasActivity.this, activityClass); newActivity.putExtra("idOferta", idOferta.toString()); newActivity.putExtra("idImagen", idImagen != null ? idImagen.toString() : null); startActivity(newActivity); } private void setListAdapter(ArrayAdapter<Oferta> adapter) { getListView().setAdapter(adapter); } private ListAdapter getListAdapter() { return getListView().getAdapter(); } private ListView getListView() { return ((ListView) findViewById(R.id.listView)); } private void loadListView() { progressBar.show(); OfertasAsyncTask task = new OfertasAsyncTask(); task.execute(new String[] { value }); } private void loadListView(List<Oferta> ofertas) { try { if (ofertas != null) { showToast("La cantidad de ofertas es " + Integer.toString(ofertas.size())); ArrayAdapter<Oferta> adapter = new OfertaAdapter(OfertasActivity.this, R.layout.activity_ofertas_item, ofertas); setListAdapter(adapter); } else { showToast("Contactos invalidos: usuarios == null"); } } catch (Exception ex) { showToast(ex.getMessage()); } } private class OfertasAsyncTask extends AsyncTask<String, Void, List<Oferta>> { @Override protected List<Oferta> doInBackground(String... params) { List<Oferta> ofertas = new ArrayList<Oferta>(); try { ofertas = ServicioRestUsuarios.getOfertas(Integer.parseInt(params[0].split("-")[0])); } catch (RestBlowUpException e) { Log.e("ERROR", e.getMessage(), e); } catch (UnauthorizedException e) { Log.w("Warning", e.getMessage(), e); } return ofertas; } @Override protected void onPostExecute(List<Oferta> result) { if (result != null) { loadListView(result); } else { showToast("Error, resultado invalido de ofertas :("); } progressBar.dismiss(); } } }