机器人:从URL,并显示在GridView控件加载图片控件、机器人、加载、图片

2023-09-07 08:35:51 作者:埖谢

我在做一个应用程序中,我得从XML响应和我得到的图片网址。现在我希望把来自URL的图片到GridView的,但我硝基甲苯知道如何提取网址的图像,并把在gridview.Any帮助会美联社preciated.My code是如下:

 公共类GalleryNewActivity延伸活动{

私人ProgressDialog对话框;
GridView的GA;
元素e;
节点ELEM;
 公开名单<可绘制>图片;

ImageView的ImageView的;
静态最后弦乐preFS_NAME =我的preFS;
静态最后弦乐USER_KEY =用户;
静态最终字符串名称=名称;


/ **第一次创建活动时调用。 * /
@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.main);

       如果(isNetworkconn()){
        新GetSPCAsyncTask()执行();
    }其他{
        showDialogOnNoInternet();
    }
  GA =(GridView控件)findViewById(R.id.Gallery01);
    ga.setAdapter(新ImageAdapter(本));
    ImageView的=(ImageView的)findViewById(R.id.ImageView01);
    }



公共类ImageAdapter扩展了BaseAdapter {
    私人语境mContext;

    公共ImageAdapter(上下文C){
        mContext = C;
    }

    公众诠释getCount将(){
        返回pictures.size();
    }

    公共对象的getItem(INT位置){
        返回null;
    }

    众长getItemId(INT位置){
        返回0;
    }

    //创建由适配器引用的每个项目的新的ImageView
    公共查看getView(INT位置,查看convertView,ViewGroup中父){
        视图V;

        如果(convertView == NULL){//如果它不回收,初始化一些
            //属性

            LayoutInflater李= getLayoutInflater();
            V = li.inflate(R.layout.galleryitem,NULL);
            ImageView的=(ImageView的)v.findViewById(R.id.thumbImage);

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

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

        imageView.setImageDrawable(pictures.get(位置));
        imageView.setTag(图片[位置]);

        返回ImageView的;
    }


私有类GetPicsToNextPage扩展的AsyncTask<字符串,字符串,字符串> {

    @覆盖
    在preExecute保护无效(){
        // TODO自动生成方法存根
        super.on preExecute();

        对话框= ProgressDialog.show(GalleryNewActivity.this,请稍等,载入中...);

    }

    @覆盖
    保护字符串doInBackground(字符串... PARAMS){
        // TODO自动生成方法存根
        字符串str = NULL;
        尝试 {
            视频下载(2000);
        }赶上(InterruptedException异常E){
            // TODO自动生成的catch块
            e.printStackTrace();
        }
        返回海峡;
    }

    @覆盖
    保护无效onPostExecute(字符串结果){
        // TODO自动生成方法存根
        super.onPostExecute(结果);
        dialog.dismiss();

        意向意图=新的意图(getApplicationContext(),Flip3d.class);
        startActivity(意向);

    }
}

私人布尔isNetworkconn(){
    ConnectivityManager conMgr =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    如果(conMgr.getActiveNetworkInfo()=空&安培;!&安培; conMgr.getActiveNetworkInfo()isAvailable()&安培;&安培; conMgr.getActiveNetworkInfo()isConnected()){
        返回true;
    }其他{
        返回false;
    }
}

私人无效showDialogOnNoInternet(){
    AlertDialog.Builder alt_bld =新AlertDialog.Builder(GalleryNewActivity.this);
    alt_bld.setTitle(错误);
    alt_bld.setMessage(您的手机没有连接到互联网。);
    alt_bld.setCancelable(假);
    alt_bld.setNeutralButton(OK,新DialogInterface.OnClickListener(){

        @覆盖
        公共无效的onClick(DialogInterface对话,诠释它){
            // TODO自动生成方法存根
            dialog.dismiss();
        }
    });
    alt_bld.show();
}


//加载动态启动
私有类GetSPCAsyncTask扩展的AsyncTask<字符串,字符串,字符串> {

    @覆盖
    在preExecute保护无效(){
        // TODO自动生成方法存根
        super.on preExecute();
        对话框= ProgressDialog.show(GalleryNewActivity.this,请稍等,载入中...);
    }

    @覆盖
    保护字符串doInBackground(字符串... PARAMS){
        // TODO自动生成方法存根

        ArrayList的< HashMap的<字符串,字符串>> mylist中=新的ArrayList< HashMap的<字符串,字符串>>();
        XML字符串= XMLfunctions.getXML();
        文档DOC = XMLfunctions.XMLfromString(XML);

        节点列表节点= doc.getElementsByTagName(图像);

        的for(int i = 0; I< nodes.getLength();我++){
            HashMap的<字符串,字符串>图=新的HashMap<字符串,字符串>();

             E =(元)nodes.item(我);

            //map.put("Image,XMLfunctions.getValue(即图像));

            map.put(的ImagePath,纳摩:+ XMLfunctions.getValue(e行的ImagePath));


            map.put(ImageHeadline,标题:+ XMLfunctions.getValue(即ImageHeadline));
            的System.out.println(map.put(ImageHeadline,标题:+ XMLfunctions.getValue(即ImageHeadline)));

            map.put(ImageDesc,说明:+ XMLfunctions.getValue(即ImageDesc));
            的System.out.println(map.put(ImageDesc,说明:+ XMLfunctions.getValue(即ImageDesc)));

            mylist.add(图)

            绘制对象D = LoadImageFromWebOperations();
            pictures.add(四);
        }

    返回XML;}
    @覆盖
    保护无效onPostExecute(字符串结果){
        // TODO自动生成方法存根
        super.onPostExecute(结果);
        dialog.dismiss();

            }
    私人绘制对象LoadImageFromWebOperations()
    {
        字符串路径= XMLfunctions.getValue(e行的ImagePath);
          尝试{
             InputStream的是=(InputStream的)新的URL(路径).getContent();
             绘制对象D = Drawable.createFromStream(是,SRC名);
             Log.w(CREADO,CREADO);
             返回D组;
         }赶上(例外五){
             的System.out.println(EXC =+ E);
             返回null;
         }
  }
}
 }
 

解决方案

我会建议你检查从以下网址加载图片的解决方案:

Android的 - 由诺斯特拉 通用图像装载机 Android - 如何做我做的一个图像延迟加载ListView中

结果,你可以得到,如果你使用通用映像加载器:

i am making an app in which i have to get response from xml and i get image urls .Now i want to put images from urls into gridview but i dnt know how to extract images from urls and put in gridview.Any help will be appreciated.My code is as follows:

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;
         }
  }
}   
 }
java天天动听怎么载入图片

解决方案

I would suggest you to check below solutions for loading images from URL:

Android - Universal Image loader by Nostra Android - How do I do a lazy load of images in ListView

Result you can get if you use Universal image loader: