如何从 Internet 获取图像并在 ListView 中过去?
Posted
技术标签:
【中文标题】如何从 Internet 获取图像并在 ListView 中过去?【英文标题】:How to get Images from Internet and past it in a 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);
感谢观看!
【问题讨论】:
【参考方案1】:Volley Library 使这项工作变得非常容易,并自行处理所有其他相关任务。您可以使用 ImageLoader 或 NetworkImageView。点击链接了解如何实现它:https://developer.android.com/training/volley/request.html
【讨论】:
谢谢它帮助我我几乎做到了,但我遇到了编码问题:***.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”?据我了解,每次添加帖子时,我都应该在此代码中添加新的图片网址?以上是关于如何从 Internet 获取图像并在 ListView 中过去?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase Storage 获取图像并在 Angular 2 ngFor 中显示它们
如何从 iOS 照片库中获取图像并在 UIWebView 中显示
如何从数据库中获取图像并在 laravel 中使用 ajax 以编辑形式预览它?