android:从网址加载图片并在gridview中显示

2 android gridview image

我正在制作一个应用程序,其中我必须从xml得到响应,我得到图像网址.现在我想将网址中的图像放入gridview但我不知道如何从网址中提取图像并放入gridview.Any帮助将不胜感激我的代码如下:

public class GalleryNewActivity extends Activity {

private ProgressDialog dialog;
GridView ga;
Element e;
Node elem;
 public List<Drawable> pictures;

ImageView imageView;
static final String PREFS_NAME = "MyPrefs";
static final String USER_KEY = "user";
static final String Name = "name";


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

       if(isNetworkconn()){
        new GetSPCAsyncTask().execute("");
    }else{
        showDialogOnNoInternet();
    }
  ga = (GridView)findViewById(R.id.Gallery01);
    ga.setAdapter(new ImageAdapter(this));
    imageView = (ImageView)findViewById(R.id.ImageView01);
    }



public class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

    public int getCount() {
        return pictures.size();
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        View v;

        if (convertView == null) { // if it's not recycled, initialize some
            // attributes

            LayoutInflater li = getLayoutInflater();
            v = li.inflate(R.layout.galleryitem, null);
            imageView = (ImageView)v.findViewById(R.id.thumbImage);

            imageView.setLayoutParams(new GridView.LayoutParams(200, 250));

            // imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(2, 5, 2, 5);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageDrawable(pictures.get(position));
        imageView.setTag(pics[position]);

        return imageView;
    }


private class GetPicsToNextPage extends AsyncTask<String, String, String>{

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();

        dialog = ProgressDialog.show(GalleryNewActivity.this, "Please wait", "Loading...");

    }

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        String str = null;
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return str;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        dialog.dismiss();

        Intent intent = new Intent(getApplicationContext(), Flip3d.class);
        startActivity(intent);

    }
}

private boolean isNetworkconn(){
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getActiveNetworkInfo() != null && conMgr.getActiveNetworkInfo().isAvailable() && conMgr.getActiveNetworkInfo().isConnected()) {
        return true;
    }else{
        return false;
    }
}

private void showDialogOnNoInternet(){
    AlertDialog.Builder alt_bld = new AlertDialog.Builder(GalleryNewActivity.this);
    alt_bld.setTitle("Error.");
    alt_bld.setMessage("Your phone is not connected to internet.");
    alt_bld.setCancelable(false);
    alt_bld.setNeutralButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            dialog.dismiss();
        }
    });
    alt_bld.show();
}


//loader for dynamic starts
private class GetSPCAsyncTask extends AsyncTask<String, String, String>{

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        dialog = ProgressDialog.show(GalleryNewActivity.this, "Please wait", "Loading...");
    }

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub

        ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
        String xml = XMLfunctions.getXML();
        Document doc = XMLfunctions.XMLfromString(xml);

        NodeList nodes = doc.getElementsByTagName("Image");

        for (int i = 0; i < nodes.getLength(); i++) {                           
            HashMap<String, String> map = new HashMap<String, String>();    

             e = (Element)nodes.item(i);

            //map.put("Image", XMLfunctions.getValue(e, "Image"));

            map.put("ImagePath", "Naam:" + XMLfunctions.getValue(e, "ImagePath"));


            map.put("ImageHeadline", "Headline: " + XMLfunctions.getValue(e, "ImageHeadline"));
            System.out.println(map.put("ImageHeadline", "Headline: " + XMLfunctions.getValue(e, "ImageHeadline")));

            map.put("ImageDesc", "Desc: " + XMLfunctions.getValue(e, "ImageDesc"));
            System.out.println(map.put("ImageDesc", "Desc: " + XMLfunctions.getValue(e, "ImageDesc")));

            mylist.add(map);

            Drawable d=LoadImageFromWebOperations();
            pictures.add(d);
        }       

    return xml;}
    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        dialog.dismiss();

            }
    private Drawable LoadImageFromWebOperations()
    {
        String path=XMLfunctions.getValue(e, "ImagePath");
          try{
             InputStream is = (InputStream) new URL(path).getContent();
             Drawable d = Drawable.createFromStream(is, "src name");
             Log.w("CREADO","CREADO");
             return d;
         }catch (Exception e) {
             System.out.println("Exc="+e);
             return null;
         }
  }
}   
 }
Run Code Online (Sandbox Code Playgroud)

Par*_*ani 9

我建议你检查以下解决方案,从URL加载图像:

  1. Android - Nostra的Universal Image loader
  2. ListView中的图像延迟加载

如果您使用通用图像加载器,您可以得到的结果:

在此输入图像描述

  • 通用图像加载器真的解决了我的问题 (2认同)