Load server image in Imageview

Asked

Viewed 1,550 times

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 or Universal Image Loader.

1 answer

-1

Well I had to develop something similar for college, so for that I researched and chose and lib Volley (which is recommended by Google) to do this asynchronous upload of images. I recommend you watch this video here, it shows how to load the image in both an Imageview and a Networkimageview. I hope it helped you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.