0

我正在尝试将搜索查询中的推文信息检索到我的 android 应用程序中。我可以将用户名和主题放在列表视图中,但我无法抓取照片。这是我的适配器的 GetView 方法

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.listitem, null);
        }

        UserRecord user = users.get(position);
        if (user != null) {
            TextView username = (TextView) v.findViewById(R.id.username);
            TextView subject = (TextView) v.findViewById(R.id.subject);
            // Bitmap bitmap = DownloadImage(user.imageURL);
            ImageView img = (ImageView) v.findViewById(R.id.avatar);
            if (username != null) {
                username.setText(user.username);
            }

            if(subject != null) {
                subject.setText(user.subject);
            }

            if (img != null){
                try {
                    URL myURL = new URL(user.imageURL);
                    HttpURLConnection conn = (HttpURLConnection) myURL.openConnection();
                    conn.setDoInput(true);
                    conn.connect();
                    InputStream is = conn.getInputStream();
                    img.setImageBitmap(BitmapFactory.decodeStream(is));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return v;
    }

我跟踪了我的代码,它在 conn.connect() 上失败并跳转到 catch 语句。有谁知道为什么会这样?我在 mainfest 中启用了 Internet 连接。谢谢!

4

2 回答 2

4

是的,它会跳转 catch 语句,它会给你以下异常,1。NetworkOnMainThreadException

2.NullPointerException

第一个是因为您试图在 UI 线程上执行网络操作。

第二个是因为你的输入流是空的,当你试图访问它时,你会得到 NullPointerException。

你需要做什么?

使用单独threadAsyncTask下载图像

这是最好的方法吗?

当您在列表视图中显示来自 url 的图像时,您需要缓存图像,因此请尝试使用UniversalImageDownloaderLazyLoadList填充图像

于 2013-05-02T16:10:30.320 回答
0

抛出的异常和错误消息是什么?

问候,雨果佩德罗萨

于 2013-05-02T16:14:59.150 回答