Tecnologia do Blogger.
RSS

[androidbrasil-dev] Ajuda na AsyncTask

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;
       }
   }

}

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário