Разбор изображений в просмотре списка - PullRequest
0 голосов
/ 25 октября 2011

Я анализирую текст и изображения в списке просмотра в приложении для Android. Я успешно проанализировал текст в списке, но не смог разобрать изображения. Я также получаю URL изображений, таких как url ​​/ image.jpeg, но не знаю, как получить изображения в изображении из этого URL. Код:

NodeList nodes = doc.getElementsByTagName("item");
for (int i = 0; i < nodes.getLength(); i++)       
{                           
  HashMap<String, String> map = new HashMap<String, String>();  
  Element e = (Element)nodes.item(i);
  bitmap = DownloadImage(XMLfunctions.getValue(e, "thumb"));
  image  = (ImageView) findViewById(R.id.image);
  image.setImageBitmap(bitmap);
  Log.e("imageView","image is:"+image);
  //map.put("id", XMLfunctions.getValue(e, "id"));
  map.put("title", XMLfunctions.getValue(e, "title"));
      map.put("author", XMLfunctions.getValue(e, "author"));
      map.put("catagory",XMLfunctions.getValue(e, "catagory"));
      mylist.add(map);          
}       
   ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.mainview, 
   new String[] {"title","author", "catagory" }, 
   new int[] {R.id.title, R.id.author,R.id.catagory });
   setListAdapter(adapter);

Метод DownloadImage:

private Bitmap DownloadImage(String URL)
{    
    Log.v("url",URL);
    Bitmap bitmap = null;
    InputStream in = null;        
    try {
        in = openHttpConnection(URL);
        bitmap = BitmapFactory.decodeStream(in);
        Log.e("image","image"+bitmap);
        in.close();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return bitmap;                
}

private InputStream openHttpConnection(String urlStr) {
    InputStream in = null;
    int resCode = -1;
     try {
    URL url = new URL(urlStr);
    URLConnection urlConn = url.openConnection();
     if (!(urlConn instanceof HttpURLConnection)) {
    throw new IOException ("URL is not an Http URL");
    }

     HttpURLConnection httpConn = (HttpURLConnection)urlConn;
    httpConn.setAllowUserInteraction(false);
               httpConn.setInstanceFollowRedirects(true);
               httpConn.setRequestMethod("GET");
               httpConn.connect();

               resCode = httpConn.getResponseCode();
               if (resCode == HttpURLConnection.HTTP_OK) {
                   in = httpConn.getInputStream();

               }
    } catch (MalformedURLException e) {

    e.printStackTrace();
    } catch (IOException e) {

    e.printStackTrace();

    }
    return in;
    } 

Я искал в Google и пробовал разные способы, но не могу разобрать изображения. Что я делаю ошибку? Любая помощь будет более ценной.

Ответы [ 3 ]

1 голос
/ 25 октября 2011

Поскольку вы не реализовали загрузку фонового изображения в своем коде, я предлагаю вам пройти через Ленивая загрузка изображений в ListView , что, на мой взгляд, наиболее полезно в вашем случае.Если вы не реализуете процесс извлечения фонового изображения, тогда экран будет зависать и снова переключаться в реальный режим при получении целых данных.

0 голосов
/ 18 мая 2013

Возможно, вы должны использовать BitmapFactory.decodeStream(inputstream);

так что это возвращает вам растровое изображение, так что теперь вы можете установить его на просмотр изображения.

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

0 голосов
/ 25 октября 2011

В моем прошлом опыте эта статья из блога Android Developer мне очень помогла, особенно с проблемами многопоточности и производительности: Многопоточность для производительности .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...