Kostas Drak
Kostas Drak

Reputation: 3260

Load image into android listview from url

Hey guys i am building an app and i would like some images from url's into android imageview inside of a listview. I used the aquery library and i get this error

04-09 17:56:43.864: I/System.out(1580): resolveUri failed on bad bitmap uri: 
04-09 17:56:43.894: E/BitmapFactory(1580): Unable to decode stream: java.io.FileNotFoundException: /: open failed: EISDIR (Is a directory)

I dont know actually how else this could have been easier.

My code is:

public class JsonReadTask extends AsyncTask<String, Void, String> {
        public JsonReadTask(){
            super();
        }
        @SuppressLint("InlinedApi")
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this, ProgressDialog.THEME_DEVICE_DEFAULT_DARK);
            pDialog.setTitle(R.string.waiting);
            pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            pDialog.setMessage(getString(R.string.get_stocks));
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(false);
            pDialog.setInverseBackgroundForced(true);
            pDialog.show();
        }
        @Override
        protected String doInBackground(String... params) {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(params[0]);
            try {
                HttpResponse response = httpclient.execute(httppost);
                jsonResult = inputStreamToString(
                        response.getEntity().getContent()).toString();
            }

            catch (Exception e) {
                Intent intent1 = new Intent(MainActivity.this, RefreshActivity.class);
                startActivityForResult(intent1, 0);
            } 
            return null;
        }
        private StringBuilder inputStreamToString(InputStream is) {
            String rLine = "";
            StringBuilder answer = new StringBuilder();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            try {
                while ((rLine = rd.readLine()) != null) {
                    answer.append(rLine);
                }
            }
            catch (Exception e) {
                Intent intent1 = new Intent(MainActivity.this, RefreshActivity.class);
                startActivity(intent1);
                startActivityForResult(intent1, 0);
            }
            return answer;
        }
        @Override
        protected void onPostExecute(String result) {
            ListDrawer();
            pDialog.dismiss();

        }
    }// end async task
    public void accessWebService() {
        JsonReadTask task = new JsonReadTask();
        // passes values for the urls string array
        task.execute(new String[] { url });

    }
    public void ListDrawer() {
        stocksList = new ArrayList<HashMap<String, String>>();
        androidAQuery = new AQuery(MainActivity.this);
        try {
            JSONObject jsonResponse = new JSONObject(jsonResult);
            JSONArray jsonMainNode = jsonResponse.optJSONArray("metoxes");
            for (int i = 0; i < jsonMainNode.length(); i++) {
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                String name = jsonChildNode.optString("name");
                String price = jsonChildNode.optString("price");
                String price1 = jsonChildNode.optString("price1");
                String price2 = jsonChildNode.optString("price2");
                String price3 = jsonChildNode.optString("price3");
                String price4 = jsonChildNode.optString("price4");
                String price5 = jsonChildNode.optString("price5");
                String price6 = jsonChildNode.optString("price6");
                String price7 = jsonChildNode.optString("price7");
                String price8 = jsonChildNode.optString("price8");
                String price9 = jsonChildNode.optString("price9");
                String price10 = jsonChildNode.optString("price10");
                String price11 = jsonChildNode.optString("price11");
                String price12 = jsonChildNode.optString("price12");
                String price13 = jsonChildNode.optString("price13");
                String price14 = jsonChildNode.optString("price14");
                String price15 = jsonChildNode.optString("price15");
                image = jsonChildNode.optString("image");
                ImageView imagelist = (ImageView)findViewById(R.id.imagestartinglist);
                androidAQuery.id(imagelist).image(image, true, true, 72, R.drawable.ic_image_preloaded);
                stocksList.add(createStockList(name, price, price1, price2, price3, price4, price5, price6, price7, price8, price9, price10, price11, price12, price13, price14, price15));
            }
        } catch (Exception e) {
            //Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                    //Toast.LENGTH_SHORT).show();
            Intent intent1 = new Intent(MainActivity.this, RefreshActivity.class);
            startActivityForResult(intent1, 0);
        } 
        ImageView imagelist = (ImageView)findViewById(R.id.imagestartinglist);

        String[] from = { "name", "price", "androidAQuery.id(imagelist).image(image, true, true, 72, R.drawable.ic_image_preloaded)"};
        int[] to = { R.id.stock_name, R.id.stock_price, R.id.imagestartinglist};
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, stocksList,
                R.layout.list_item,
                from, to);
        listView.setAdapter(simpleAdapter);
    }
    public HashMap<String, String> createStockList(String name, String price, String price1, String price2, String price3, String price4, String price5, String price6, String price7, String price8, String price9, String price10, String price11, String price12, String price13, String price14, String price15) {
        HashMap<String, String> stockNameNo = new HashMap<String, String>();
        stockNameNo.put("name", name);
        stockNameNo.put("price", price);
        stockNameNo.put("price1", price1);
        stockNameNo.put("price2", price2);
        stockNameNo.put("price3", price3);
        stockNameNo.put("price4", price4);
        stockNameNo.put("price5", price5);
        stockNameNo.put("price6", price6);
        stockNameNo.put("price7", price7);
        stockNameNo.put("price8", price8);
        stockNameNo.put("price9", price9);
        stockNameNo.put("price10", price10);
        stockNameNo.put("price11", price11);
        stockNameNo.put("price12", price12);
        stockNameNo.put("price13", price13);
        stockNameNo.put("price14", price14);
        stockNameNo.put("price15", price15);
        //stockNameNo.put("image", image);
        return stockNameNo;
    }
}

Could someone point me the way to load images properly??

Thanks in advance!!

Upvotes: 0

Views: 187

Answers (1)

MilapTank
MilapTank

Reputation: 10076

use this library form image download its very useful

https://github.com/nostra13/Android-Universal-Image-Loader

Upvotes: 1

Related Questions