Android的下载图像从URL,并显示在ImageView的 [英] Android Download Image From URL and show in Imageview

查看:296
本文介绍了Android的下载图像从URL,并显示在ImageView的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想告诉我下载的图像在我的ImageView。我收到错误类型不匹配:不能从ImageView的转换为位图。它说我不能在ImageView的显示位图图像。谁能告诉我一个方法来完成呢?

 公共类SingleImageViewActivity扩展SherlockActivity {

        // XML节点键
    静态最后弦乐KEY_TITLE =称号;
    静态最后弦乐KEY_ARTIST =艺术家;
    静态最后弦乐KEY_BIG_URL =big_url;
    私人ProgressDialog pDialog;
    字符串称号;
    字符串的艺术家;
    字符串big_image_url;
    ImageView的观点;
    URL网址;
    位图bmImg = NULL;
    ShareActionProvider mShareActionProvider;
        @覆盖
        公共无效的onCreate(包savedInstanceState){
            super.onCreate(savedInstanceState);
            的setContentView(R.layout.single_view_item);
            getSupportActionBar()setDisplayHomeAsUpEnabled(真)。


            新loadSingleView()执行()。


        }

    公共类loadSingleView扩展的AsyncTask<字符串,字符串,字符串> {

            @覆盖
            在preExecute保护无效(){
                super.on preExecute();
                pDialog =新ProgressDialog(SingleImageViewActivity.this);
                pDialog.setTitle(连接到服务器);
                pDialog.setMessage(这个过程可能需要几秒钟到几分钟,这取决于你的互联网连接速度。);
                pDialog.setIndeterminate(假);
                pDialog.setCancelable(假);
                pDialog.show();
            }
            @覆盖
            保护字符串doInBackground(字符串参数... args){
                //从后台线程更新UI
                尝试 {
                    意图= getIntent();

                    big_image_url = in.getStringExtra(KEY_BIG_URL);
                    标题= in.getStringExtra(KEY_TITLE);
                    艺术家= in.getStringExtra(KEY_ARTIST);


                    URL =新的URL(big_image_url);
                    HttpURLConnection的康恩=(HttpURLConnection类)url.openConnection();
                    conn.setDoInput(真正的);
                    conn.connect();
                    InputStream的是= conn.getInputStream();
                    bmImg = BitmapFactory.de codeStream(是);
                }
                赶上(IOException异常E)
                {
                    e.printStackTrace();
                }

                返回null;
            }
                @覆盖
        保护无效onPostExecute(字符串参数){
            让所有的产品之后//关闭该对话框
             TextView的lblName =(TextView中)findViewById(R.id.name_title);
                TextView的lblCost =(TextView中)findViewById(R.id.name_artist);



                lblName.setText(职称);
                lblCost.setText(艺术家);

                动作条AB = getSupportActionBar();
                ab.setTitle(职称);
                ab.setSubtitle(艺术家);

                鉴于=(ImageView的)findViewById(R.id.single_image);
                view.setImageBitmap(bmImg);


            pDialog.dismiss();


        }

                }
 

logcat的:

  08-28 22:19:44.225:E / AndroidRuntime(20825):致命异常:AsyncTask的#3
08-28 22:19:44.225:E / AndroidRuntime(20825):java.lang.RuntimeException的:执行doInBackground时出错()
08-28 22:19:44.225:E / AndroidRuntime(20825):在android.os.AsyncTask $ 3.done(AsyncTask.java:278)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:569)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.lang.Thread.run(Thread.java:856)
08-28 22:19:44.225:E / AndroidRuntime(20825):由:显示java.lang.NullPointerException
08-28 22:19:44.225:E / AndroidRuntime(20825):在com.example.androidhive.SingleImageViewActivity$loadSingleView.doInBackground(SingleImageViewActivity.java:91)
08-28 22:19:44.225:E / AndroidRuntime(20825):在com.example.androidhive.SingleImageViewActivity$loadSingleView.doInBackground(SingleImageViewActivity.java:1)
08-28 22:19:44.225:E / AndroidRuntime(20825):在android.os.AsyncTask $ 2.call(AsyncTask.java:264)
08-28 22:19:44.225:E / AndroidRuntime(20825):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)
08-28 22:19:44.225:E / AndroidRuntime(20825):4 ...更多
08-28 22:19:49.631:E /窗口管理器(20825):活动com.example.androidhive.SingleImageViewActivity渗漏最初此处添加窗口com.android.internal.policy.impl.PhoneWindow$DecorView@416c0328
08-28 22:19:49.631:E /窗口管理器(20825):android.view.WindowLeaked:活动com.example.androidhive.SingleImageViewActivity渗漏窗口com.android.internal.policy.impl.PhoneWindow$DecorView@416c0328这是原本在这里添加
。08-28 22:19:49.631:E /窗口管理器(20825):在android.view.ViewRootImpl< INIT>(ViewRootImpl.java:428)
08-28 22:19:49.631:E /窗口管理器(20825):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267)
08-28 22:19:49.631:E /窗口管理器(20825):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
08-28 22:19:49.631:E /窗口管理器(20825):在android.view.WindowManagerImpl $ CompatModeWrapper.addView(WindowManagerImpl.java:140)
08-28 22:19:49.631:E /窗口管理器(20825):在android.view.Window $ LocalWindowManager.addView(Window.java:537)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.Dialog.show(Dialog.java:278)
08-28 22:19:49.631:E /窗口管理器(20825):在com.example.androidhive.SingleImageViewActivity$loadSingleView.on$p$pExecute(SingleImageViewActivity.java:72)
08-28 22:19:49.631:E /窗口管理器(20825):在android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
08-28 22:19:49.631:E /窗口管理器(20825):在android.os.AsyncTask.execute(AsyncTask.java:511)
08-28 22:19:49.631:E /窗口管理器(20825):在com.example.androidhive.SingleImageViewActivity.onCreate(SingleImageViewActivity.java:57)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.Activity.performCreate(Activity.java:4465)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.ActivityThread.access $ 600(ActivityThread.java:127)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1161)
08-28 22:19:49.631:E /窗口管理器(20825):在android.os.Handler.dispatchMessage(Handler.java:99)
08-28 22:19:49.631:E /窗口管理器(20825):在android.os.Looper.loop(Looper.java:137)
08-28 22:19:49.631:E /窗口管理器(20825):在android.app.ActivityThread.main(ActivityThread.java:4512)
08-28 22:19:49.631:E /窗口管理器(20825):在java.lang.reflect.Method.invokeNative(本机方法)
08-28 22:19:49.631:E /窗口管理器(20825):在java.lang.reflect.Method.invoke(Method.java:511)
08-28 22:19:49.631:E /窗口管理器(20825):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:982)
08-28 22:19:49.631:E /窗口管理器(20825):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
08-28 22:19:49.631:E /窗口管理器(20825):在dalvik.system.NativeStart.main(本机方法)
 

解决方案

您宣布的ImageView为

  ImageView的观点;
 

您必须在ImageView的设置图像。 它应该是这样的。

 查看=(ImageView的)findViewById(R.id.single_image);
view.setImageBitmap(bmImg);
 

I want to show my downloaded image in my Imageview. I'm getting error " Type mismatch: cannot convert from ImageView to Bitmap " . Its saying I cannot show Bitmap images in imageview. Can anyone show me a way to accomplish it?

public class SingleImageViewActivity  extends SherlockActivity {

        // XML node keys
    static final String KEY_TITLE = "title";
    static final String KEY_ARTIST = "artist";  
    static final String KEY_BIG_URL = "big_url";
    private ProgressDialog pDialog;
    String title;
    String artist;
    String big_image_url;
    ImageView view;
    URL url;
    Bitmap bmImg = null;
    ShareActionProvider mShareActionProvider;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.single_view_item);
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);


            new loadSingleView().execute();


        }

    public class loadSingleView extends AsyncTask<String, String, String> {

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                pDialog = new ProgressDialog(SingleImageViewActivity.this);
                pDialog.setTitle("Connect to Server");
                pDialog.setMessage("This process can take a few seconds to a few minutes, depending on your Internet Connection Speed.");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(false);
                pDialog.show();
            }
            @Override
            protected String doInBackground(String... args) {
                // updating UI from Background Thread
                try {  
                    Intent in = getIntent();

                    big_image_url = in.getStringExtra(KEY_BIG_URL);
                    title = in.getStringExtra(KEY_TITLE);
                    artist = in.getStringExtra(KEY_ARTIST);


                    url = new URL(big_image_url);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();   
                    conn.setDoInput(true);   
                    conn.connect();     
                    InputStream is = conn.getInputStream();
                    bmImg = BitmapFactory.decodeStream(is); 
                }
                catch (IOException e)
                {       
                    e.printStackTrace();  
                }

                return null;   
            }
                @Override       
        protected void onPostExecute(String args) {
            // dismiss the dialog after getting all products
             TextView lblName = (TextView) findViewById(R.id.name_title);
                TextView lblCost = (TextView) findViewById(R.id.name_artist);



                lblName.setText(title);
                lblCost.setText(artist);

                ActionBar ab = getSupportActionBar();
                ab.setTitle(title);
                ab.setSubtitle(artist);

                view = (ImageView) findViewById(R.id.single_image);
                view.setImageBitmap(bmImg);


            pDialog.dismiss();


        }

                }

Logcat :

08-28 22:19:44.225: E/AndroidRuntime(20825): FATAL EXCEPTION: AsyncTask #3
08-28 22:19:44.225: E/AndroidRuntime(20825): java.lang.RuntimeException: An error occured while executing doInBackground()
08-28 22:19:44.225: E/AndroidRuntime(20825):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.lang.Thread.run(Thread.java:856)
08-28 22:19:44.225: E/AndroidRuntime(20825): Caused by: java.lang.NullPointerException
08-28 22:19:44.225: E/AndroidRuntime(20825):    at com.example.androidhive.SingleImageViewActivity$loadSingleView.doInBackground(SingleImageViewActivity.java:91)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at com.example.androidhive.SingleImageViewActivity$loadSingleView.doInBackground(SingleImageViewActivity.java:1)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
08-28 22:19:44.225: E/AndroidRuntime(20825):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-28 22:19:44.225: E/AndroidRuntime(20825):    ... 4 more
08-28 22:19:49.631: E/WindowManager(20825): Activity com.example.androidhive.SingleImageViewActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@416c0328 that was originally added here
08-28 22:19:49.631: E/WindowManager(20825): android.view.WindowLeaked: Activity com.example.androidhive.SingleImageViewActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@416c0328 that was originally added here
08-28 22:19:49.631: E/WindowManager(20825):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:428)
08-28 22:19:49.631: E/WindowManager(20825):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:267)
08-28 22:19:49.631: E/WindowManager(20825):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
08-28 22:19:49.631: E/WindowManager(20825):     at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
08-28 22:19:49.631: E/WindowManager(20825):     at android.view.Window$LocalWindowManager.addView(Window.java:537)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.Dialog.show(Dialog.java:278)
08-28 22:19:49.631: E/WindowManager(20825):     at com.example.androidhive.SingleImageViewActivity$loadSingleView.onPreExecute(SingleImageViewActivity.java:72)
08-28 22:19:49.631: E/WindowManager(20825):     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
08-28 22:19:49.631: E/WindowManager(20825):     at android.os.AsyncTask.execute(AsyncTask.java:511)
08-28 22:19:49.631: E/WindowManager(20825):     at com.example.androidhive.SingleImageViewActivity.onCreate(SingleImageViewActivity.java:57)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.Activity.performCreate(Activity.java:4465)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.ActivityThread.access$600(ActivityThread.java:127)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
08-28 22:19:49.631: E/WindowManager(20825):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 22:19:49.631: E/WindowManager(20825):     at android.os.Looper.loop(Looper.java:137)
08-28 22:19:49.631: E/WindowManager(20825):     at android.app.ActivityThread.main(ActivityThread.java:4512)
08-28 22:19:49.631: E/WindowManager(20825):     at java.lang.reflect.Method.invokeNative(Native Method)
08-28 22:19:49.631: E/WindowManager(20825):     at java.lang.reflect.Method.invoke(Method.java:511)
08-28 22:19:49.631: E/WindowManager(20825):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:982)
08-28 22:19:49.631: E/WindowManager(20825):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
08-28 22:19:49.631: E/WindowManager(20825):     at dalvik.system.NativeStart.main(Native Method)

解决方案

You declared ImageView as

ImageView view;

You have to set Image on ImageView. It should be like this

view = (ImageView) findViewById(R.id.single_image);
view.setImageBitmap(bmImg);

这篇关于Android的下载图像从URL,并显示在ImageView的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆