Gente estou com um problema que está me tirando o sono, tenho uma activity inicial com dois botoes que chamam outras activity.
Entrando nelas deve ser feita uma verificação para ver se o servidor está OK, como isso? Eu apenas estou fazendo uma consulta ao meu WS
e adicionando os dados recebido em uma List. Suponhamos que essa consulta demore, gostaria de que nesse tempo ficasse a telinha do Aguarde...
só que eu estou com muitas dúvidas que são as seguintes:
Já que a Async vai me trazer os dados que eu preciso para popular a listView o certo seria popular com esses dados certo?
Eu preciso fazer duas consultas, como seria para resolver isso?
Vou postar minha classe para que vocês vejam, antes de mais nada a coitada está completamente desajeitada, vou resolver isso depois!
Apaguei alguma linhas para ficar menos ruim de ler
public class BarActivity extends Activity implements PageInfoProvider {
public static final String[] titulos = new String[] {"Bares", "Dica QualquerCanto"};
private final EstabelecimentoREST estabelecimentoREST = new EstabelecimentoREST();
private List<Estabelecimento> dadosBar, anuncioBar = null;
private PageAdapter adapter;
private ListView lv = null;
private Processo processo = null;
private ViewPagerIndicator indicator;
private ViewPager myPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bar);
processo = new Processo(BarActivity.this);
processo.execute();
ActionBar actionBar = (ActionBar) findViewById(R.id.actionBarBar);
actionBar.setTitle("Bares");
adapter = new PageAdapter(BarActivity.this);
myPager = (ViewPager) findViewById(R.id.viewPager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(1);
indicator = (ViewPagerIndicator) findViewById(R.id.indicatorBar);
indicator.init(1, adapter.getCount(), this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_bar, menu);
return true;
}
@Override
public String getTitle(int pos) {
return titulos[pos];
}
public class PageAdapter extends PagerAdapter implements PageInfoProvider{
private Context context;
private GridView gridView;
public PageAdapter(Context context) {
this.context = context;
}
@Override
public int getCount() {
return 2;
}
@Override
public Object instantiateItem(final View collection, int position) {
switch (position) {
case 0:
try {
dadosBar = estabelecimentoREST.getListaBar();
ArrayAdapter<Estabelecimento> ad = new CustomAdapter(context, R.layout.item_bar, dadosBar);
lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(ad);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.informacoes_bar);
dialog.setTitle("Qualquer Canto indica: ");
TextView nome = (TextView) dialog.findViewById(R.id.tv_nome);
nome.setText(dadosBar.get(arg2).getNome() +
"("+dadosBar.get(arg2).getCustoPessoa()+")"+
"\n"+dadosBar.get(arg2).getTipoEstabelecimento()+"\n");
TextView logradouro = (TextView) dialog.findViewById(R.id.tv_logradouro);
logradouro.setText("Endereço: " + "\n" + dadosBar.get(arg2).getEndereco().getLogradouro());
Button voltar = (Button) dialog.findViewById(R.id.bt_voltar);
voltar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
});
} catch (Exception e) {
dadosBar = null;
Toast.makeText(getApplicationContext(), "Falha ao conectar com o servidor", Toast.LENGTH_SHORT).show();
}
return lv;
case 1:
try {
anuncioBar = estabelecimentoREST.getListaAnuncioBar();
gridView = (GridView) findViewById(R.id.gridView1);
gridView.setAdapter(new ImageAdapterBar(context));
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.anuncio);
dialog.setTitle(dadosBar.get(arg2).getNome());
TextView segunda = (TextView) dialog.findViewById(R.id.textView1);
segunda.setText("Segunda feira: "+"\n"
+anuncioBar.get(arg2).getAnuncio().getSegunda()+"\n");
dialog.show();
}
});
}catch (Exception e) {
e.printStackTrace();
}
return gridView;
}
return null;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public String getTitle(int pos) {
return titulos[pos];
}
}
public class Processo extends AsyncTask<Void, String, List<Estabelecimento>> {
private ProgressDialog progress;
private Context context;
public Processo(Context context) {
this.context = context;
}
@Override
protected void onPreExecute() {
Log.i("tag", "Cria novo um ProgressDialogo e exibe");
progress = new ProgressDialog(context);
progress.setMessage("Aguarde...");
progress.show();
}
@Override
protected List<Estabelecimento> doInBackground(Void... paramss) {
List<Estabelecimento> listaBar = null;
publishProgress("Aguarde...");
try {
//dentro desse método essa linha abaixo da erro, porem, em qualquer outro lugar da classe ela nao da erro
listaBar = estabelecimentoREST.getListaBar();
} catch (Exception e) {
Log.i("tag", "Deu em merda saporra");
e.printStackTrace();
}
return listaBar;
}
@Override
protected void onPostExecute(List<Estabelecimento> result) {
Log.e("tag2", "Cancela progressDialogo");
progress.dismiss();
}
@Override
protected void onProgressUpdate(String... values) {
Log.w("tag", "Atualiza mensagem" + values);
}
}
public static boolean Conectado(Context context) {
try {
ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected()) {
Log.d("3G","Status de conexão 3G: "+cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected());
return true;
} else if(cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()){
Log.d("Wifi","Status de conexão Wifi: "+cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected());
return true;
} else {
Log.e("Wifi","Status de conexão Wifi: "+cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected());
Log.e("3G","Status de conexão 3G: "+cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected());
return false;
}
} catch (Exception e) {
Log.e("Erro",e.getMessage());
return false;
}
}
}






0 comentários:
Postar um comentário