0
I’m getting the bank information via WebService
, and take the image path that’s on the server.
This image I have to click on a ListView
, for that I make a AssyncTask
inside my Adapter
, but he does not seek the images because he calls the AssyncTask
6 times, being that it has 2 images registered only, what I have to do, below follows the codes.
public class PesquisaAdapter extends BaseAdapter {
private List<Produto> listaProdutos;
// private List<Loja> listaLojas;
// private List<Marca> listaMarcas;
private final Activity activity;
Dados dados = new Dados();
ImageView imagemProduto;
ProgressDialog progress;
public PesquisaAdapter(List<Produto> produtos, Activity activity) {
this.listaProdutos = produtos;
// this.listaLojas = lojas;
// this.listaMarcas = marcas;
this.activity = activity;
}
@Override
public View getView(int posicao, View convertView, ViewGroup parent) {
View layout = activity.getLayoutInflater().inflate(
R.layout.item_pesquisar, null);
Produto produto = listaProdutos.get(posicao);
// Loja loja = listaLojas.get(posicao);
// Marca marca = listaMarcas.get(posicao);
imagemProduto = (ImageView) layout.findViewById(R.id.item_pesquisa_img);
TextView descricaoProduto = (TextView) layout
.findViewById(R.id.item_pesquisa_descricaoproduto);
TextView descricaoMarca = (TextView) layout
.findViewById(R.id.item_pesquisa_descricaomarca);
TextView nomeLoja = (TextView) layout
.findViewById(R.id.item_pesquisa_nomeloja);
descricaoProduto.setText(produto.getDescricao());
// nomeLoja.setText(loja.getNomeFantasia());
carregarImagem(produto.getUrlImagem());
return layout;
}
@Override
public int getCount() {
return listaProdutos.size();
}
@Override
public Object getItem(int posicao) {
return listaProdutos.get(posicao);
}
@Override
public long getItemId(int posicao) {
return listaProdutos.get(posicao).getIdMarca();
}
public void carregarImagem(String urlImagem) {
new CarregaImagemTask().execute(dados.endereco + "app/webroot/img/up/"
+ urlImagem);
}
public class CarregaImagemTask extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// progress = ProgressDialog.show(PesquisarActivity.this,
// "Aguarde...", "Carregando Imagens...", true, true);
}
protected Bitmap doInBackground(String... params) {
String urlString = params[0];
try {
URL url = new URL(urlString);
HttpURLConnection conexao = (HttpURLConnection) url
.openConnection();
conexao.setRequestMethod("GET");
conexao.setDoInput(true);
conexao.connect();
InputStream is = conexao.getInputStream();
Bitmap imagem = BitmapFactory.decodeStream(is);
return imagem;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
//progress.dismiss();
if (result != null) {
Bitmap imagemReduzida = Bitmap.createScaledBitmap(result, 150, 150, true);
imagemProduto.setImageBitmap(imagemReduzida);
}
}
}
}
Why not use some specialized image uploading library? They are made for this type of requirement. Take a look at this list (https://android-arsenal.com/tag/46) and choose one. I recommend the
Picasso
orUniversal Image Loader
.– Wakim