【问题标题】:How to get Images from Internet and past it in a ListView?如何从 Internet 获取图像并在 ListView 中过去?
【发布时间】:2015-08-07 20:09:31
【问题描述】:

我正在做我的 BlogApp。它从 Internet 获取所有数据。我添加了三个 TextView,但从 JSON 获取图像时遇到问题。我尝试了不同的方法,但我仍然不明白如何做到这一点。这是我的代码的一部分:

 private void handleBlogResponse() {
    mProgressBar.setVisibility(View.INVISIBLE);

    if (mBlogData==null){
        updateDisplayForError();

    }else {
        try {
            JSONArray jsonPosts = mBlogData.getJSONArray("posts");
            ArrayList<HashMap<String, String>> blogPosts = new ArrayList<HashMap<String, String>>();
            for (int i=0; i<jsonPosts.length(); i++){
                JSONObject posts = jsonPosts.getJSONObject(i);
                String title = posts.getString(KEY_TITLE); //"title"
                title = Html.fromHtml(title).toString();
                String author = posts.getString(KEY_AUTHOR); //"author"
                author = Html.fromHtml(author).toString();
                String time = posts.getString((KEY_TIME));  //"time"
                time = Html.fromHtml(time).toString();
                String icon = posts.getString(KEY_ICON);  //"icon" (icons url)
                icon = Html.fromHtml(icon).toString();

我停在这里,不知道下一步该做什么!也许我应该为我的图像添加一个适配器来转换它?

                HashMap<String, String> blogPost = new HashMap<String, String>();
                blogPost.put(KEY_TITLE, title);
                blogPost.put(KEY_AUTHOR, author);
                blogPost.put(KEY_TIME, time);

                blogPosts.add(blogPost);
            }

            String[] keys = {KEY_TITLE, KEY_AUTHOR, KEY_TIME};
            int[] ids = {R.id.textView1, R.id.textView2, R.id.textView3};
            SimpleAdapter adapter = new SimpleAdapter(this, blogPosts, R.layout.row_layout,
                    keys, ids);
            setListAdapter(adapter);

        } catch (JSONException e) {
            Log.e(TAG, "Exception caught" + e);
        }
    }
}

感谢观看!

【问题讨论】:

    标签: android json android-listview android-arrayadapter listadapter


    【解决方案1】:

    Volley Library 使这项工作变得非常容易,并自行处理所有其他相关任务。您可以使用 ImageLoader 或 NetworkImageView。
    点击链接了解如何实现它:https://developer.android.com/training/volley/request.html

    【讨论】:

    • 谢谢它帮助我我几乎做到了,但我遇到了编码问题:stackoverflow.com/questions/30472366/…
    • @Nikolai 我已经完成了 UTF 编码,它对我来说很好用。如果您需要更多帮助,请分享确切的代码。如果您的问题得到解决;请将其标记为答案:-)
    【解决方案2】:

    首先从 url 下载图片,然后将其设置到您的 imageView 中。

    public class LoadImageFromURL extends AsyncTask{  
    @Override  
    protected Bitmap doInBackground(String... params) {  
    
    try {
    URL url = new URL("image-url");  
    InputStream is = url.openConnection().getInputStream();  
    Bitmap bitMap = BitmapFactory.decodeStream(is);  
    return bitMap;  
    
    } catch (MalformedURLException e) {
    
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;
    
    }
    @Override  
    protected void onPostExecute(Bitmap result) {
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    yourImageview.setImageBitmap(result);
    }
    
    } 
    

    希望对你有帮助..!

    【讨论】:

    • 感谢您的关注,但是否可以在不为每张图片编写 url 的情况下下载所有图片?使用关键词“post”?据我了解,每次添加帖子时,我都应该在此代码中添加新的图片网址?
    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多