Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在ListView中显示来自internet的图像_Android_Listview - Fatal编程技术网

Android 在ListView中显示来自internet的图像

Android 在ListView中显示来自internet的图像,android,listview,Android,Listview,我希望这200张图片在ListView的每一行中。 我必须在哪里复制此代码,该代码在我的CustomAdapter中从internet收集图片 for(int i = 1; i <= 200; i++){ final int ii = i; final ImageView imageView = new ImageView(CustomListView.this); RelativeLayout.LayoutParams lp = new RelativeL

我希望这200张图片在ListView的每一行中。 我必须在哪里复制此代码,该代码在我的CustomAdapter中从internet收集图片

    for(int i = 1; i <= 200; i++){
    final int ii = i;
    final ImageView imageView = new ImageView(CustomListView.this);
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
    //linearLayout.addView(imageView,lp);

    Thread thread = new Thread(){
        @Override
        public void run(){
            final Bitmap bm = getBitmapFromURL("http://ruthe.de/cartoons/strip_"+getPictureName(ii)+".jpg");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    if(bm !=null){
                        imageView.setImageBitmap(bm);
                    }
                    else {
                        //linearLayout.removeView(imageView);
                    }
                }
            });
        }
    };thread.start ();
}

for(int i=1;i毕加索允许在应用程序中轻松加载图像,通常只需一行代码!
有关库,请检查此链接
在页面底部,您可以下载jar文件并将其粘贴到libs文件夹中

Picasso.with(context).load("YOUR IMAGE URL").into(imageView);
int您的getView方法

喜欢吗

holder.image=(ImageView)vi.findViewById(R.id.image);
然后

Picasso.with(context).load("YOUR IMAGE URL").into(holder.image);

看一看毕加索图书馆。它使它变得非常简单。

要使用它,只需使用标准findViewById查找ImageView,然后使用以下代码:

Picasso.with(context).load("www.google.com/images/1").into(imageView);
只需输入URL和ImageView,毕加索就会异步加载图像并将其放入ImageView


我目前使用它在列表视图中显示400多个图像的列表,效果非常好。

除了线程之外,您可以在适配器内部使用位图对象,并使用位图对象初始化图像视图,使用位置整数而不是(ii)。

嗨,我找到了我的应用程序的解决方法:我创建了一个类类型:

public class myClass {
....
...
private Bitmap imguser;
..在costructor中,我添加了异步任务的对象,如Future,并发送了图像名称 已从服务器端收到

public myClass(..., ..,..,String userid, ...){

    Future<Bitmap> futureimguser;
    ExecutorService executor = Executors.newCachedThreadPool(); 

    getImgFromSite getimguserfromsite = new getImgFromSite(userid,"imguser");

    futureico = executor.submit(geticofromsite);
    futureimguser = executor.submit(getimguserfromsite)


        .......


    this.imguser = futureimguser.get();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ExecutionException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        this.icopoi = futureico.get();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ExecutionException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    executor.shutdown();
publicMyClass(…,…,stringuserid,…){
未来imguser;
ExecutorService executor=Executors.newCachedThreadPool();
getImgFromSite getimguserfromsite=新的getImgFromSite(用户ID,“imguser”);
futureico=执行人提交(geticofromsite);
futureimguser=executor.submit(getimguserfromsite)
.......
this.imguser=futureimguser.get();
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(执行例外){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
this.icopoi=futureico.get();
}捕捉(中断异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(执行例外){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
executor.shutdown();
接下来我有一个类似下面的方法,从我的站点加载图像

private final class getImgFromSite implements  Callable<Bitmap>  {
    String imgsrc = new String();
    String imgtipo = new String();
    public getImgFromSite(String srcimg,String imgtipo) {

        this.imgsrc = srcimg;
        this.imgtipo = imgtipo;
    }

    @Override
    public Bitmap call() throws Exception {
        String imgpath;
        if(imgtipo.compareTo("imguser") == 0){
            imgpath = "http://mysite/assets/imgcomics/"+imgsrc+".jpg";
        }
        else{
            imgpath = "http://mysite/"+imgsrc;

        }

        Bitmap myBitmap; 
        URL url = new URL(imgpath);

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            myBitmap= BitmapFactory.decodeStream(input);
           return myBitmap;

    }

}
private final类getImgFromSite实现了可调用{
字符串imgsrc=新字符串();
字符串imgtipo=新字符串();
公共getImgFromSite(字符串srcimg,字符串imgtipo){
this.imgsrc=srcimg;
this.imgtipo=imgtipo;
}
@凌驾
公共位图调用()引发异常{
字符串imgpath;
if(imgtipo.compareTo(“imguser”)==0){
imgpath=”http://mysite/assets/imgcomics/“+imgsrc+”.jpg”;
}
否则{
imgpath=”http://mysite/“+imgsrc;
}
位图;
URL=新URL(imgpath);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream输入=连接。getInputStream();
myBitmap=BitmapFactory.decodeStream(输入);
返回我的位图;
}
}

希望我能为您提供帮助!

您也可以尝试通用图像加载器-谢谢。我使用了通用图像加载器
private final class getImgFromSite implements  Callable<Bitmap>  {
    String imgsrc = new String();
    String imgtipo = new String();
    public getImgFromSite(String srcimg,String imgtipo) {

        this.imgsrc = srcimg;
        this.imgtipo = imgtipo;
    }

    @Override
    public Bitmap call() throws Exception {
        String imgpath;
        if(imgtipo.compareTo("imguser") == 0){
            imgpath = "http://mysite/assets/imgcomics/"+imgsrc+".jpg";
        }
        else{
            imgpath = "http://mysite/"+imgsrc;

        }

        Bitmap myBitmap; 
        URL url = new URL(imgpath);

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            myBitmap= BitmapFactory.decodeStream(input);
           return myBitmap;

    }

}