-2

Я занимаюсь своим BlogApp. Он получает все данные из Интернета. Я добавил три TextViews, но у меня проблема с получением изображений из JSON. Я пробовал разные способы, но я до сих пор не понимаю, как это сделать. Вот часть моего кода:Как получить изображения из Интернета и пройти его в ListView?

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

+0

Thank's Это помогает мне, я почти сделал это, но столкнулся с проблемой кодирования: http://stackoverflow.com/questions/30472366/fail-with-utf-8-encoding-in-volley-requests – Nikolai

+0

@Nikolai Я сделал UTF, и он отлично работает для меня. Если вам нужна дополнительная помощь, поделитесь точным кодом. Если ваша проблема решена; отметьте это как ответ :-) – AnswerDroid

1

Прежде всего, загрузите изображение с URL-адреса, затем установите его в свое изображение.

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); 
} 

} 

Надеюсь, это поможет вам ..!

+0

Спасибо, за ваше внимание, но можете ли вы скачать все изображения без написания URL-адреса для каждого изображения? Использование ключевого слова «post»? Как я понял, каждый раз, когда я добавляю сообщение, я должен добавить новый url для этого кода? – Nikolai

Смежные вопросы