2013-03-10 2 views
0

Html.fromHtml을 사용하여 이미지가 포함 된 HTML 텍스트를 변환하려고 시도 중이며 ListView 내부에 이미지를 설정했지만 이미지가 사각형으로 나타납니다! 나는 imageGetter을 구현하고 또한 내가Android의 스팬 이미지 목록보기

StrictMode.ThreadPolicy 정책 = 새로운 StrictMode.ThreadPolicy.Builder()를 설정 permitAll() 구축()..; StrictMode.setThreadPolicy (policy);

여기 android.os.NetworkOnMainThreadException

피하기 위해 내 코드입니다 :

public ImageGetter getImageHTML(){ 
     ImageGetter ig = new ImageGetter(){ 
      public Drawable getDrawable(String source) { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 
      try{ 
       Drawable d = Drawable.createFromStream(new URL(source).openStream(), "src name"); 
       d.setBounds(0, 0, d.getIntrinsicWidth(),d.getIntrinsicHeight()); 
       return d; 
      }catch(IOException e){ 
       Log.v("IOException",e.getMessage()); 
       return null; 
      } 
      } 
      }; 
     return ig; 
    } 

누군가가 나를 도울 수 있습니다 : 여기

private class MyTask extends AsyncTask<Void, Void, Void>{ 

@Override 
protected Void doInBackground(Void... arg0) { 
try { 
URL rssUrl = new URL(link); 
SAXParserFactory mySAXParserFactory = SAXParserFactory.newInstance(); 
       SAXParser mySAXParser = mySAXParserFactory.newSAXParser(); 
       XMLReader myXMLReader = mySAXParser.getXMLReader(); 
       RSSHandler myRSSHandler = new RSSHandler(); 
       myXMLReader.setContentHandler(myRSSHandler); 
       InputSource myInputSource = new InputSource(rssUrl.openStream()); 
myXMLReader.parse(myInputSource); 

myRssFeed = myRSSHandler.getFeed(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace();  
      } catch (ParserConfigurationException e) { 
       e.printStackTrace();  
      } catch (SAXException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace();  
      } 

      return null; 
     } 

@Override 
protected void onPostExecute(Void result) { 
      if (myRssFeed!=null) 
      { 

       List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 
       for (RSSItem item : myRssFeed.getList()) { 
        Spanned span = Html.fromHtml(item.getDescription().toString(), getImageHTML(), null);   
        Map<String, String> datum = new HashMap<String, String>(0); 
        datum.put("title", item.getTitle()); 
        datum.put("desc", span.toString()); 
        data.add(datum); 

       } 
       SimpleAdapter adapter2 = new SimpleAdapter(getApplicationContext(), data, R.layout.listview, new String[] {"title", "desc"}, new int[] {R.id.text1, 
        R.id.text2}); 


       setListAdapter(adapter2); 

그리고이 ImageGetter입니까?

+0

에 코드 위의 이동? 더 이상 당신은 지금까지 무엇을 시도 했습니까? –

+0

방금 ​​새 정보로 내 게시물을 업데이트했습니다! ImageGetter를 구현할 수 있기 때문에 몇 가지 변경 사항이 존중되지만, 작동하지 않는 것 같습니다! –

답변

0

myRssFeed.getList() 또는 item.getDescription()이 모든 네트워크 작업 (단지 추측)을 수행하는지 확신 할 수 없으며 do 루프 배경을 doInBackground 메서드 내에 추가해보십시오.

List<Map<String, String>> data = new ArrayList<Map<String, String>>(); 
      for (RSSItem item : myRssFeed.getList()) { 
       Spanned span = Html.fromHtml(item.getDescription().toString(), getImageHTML(), null);   
       Map<String, String> datum = new HashMap<String, String>(0); 
       datum.put("title", item.getTitle()); 
       datum.put("desc", span.toString()); 
       data.add(datum); 

      } 
      adapter2 = new SimpleAdapter(getApplicationContext(), data, R.layout.listview, new String[] {"title", "desc"}, new int[] {R.id.text1, 
       R.id.text2}); 

선언 SimpleAdapter의 MyTask의 글로벌 변수로 adapter2 및 doInBackground 방법 정확하게 작동하지 않습니다 무엇

+0

ImageGetter를 구현할 수 있으며 텍스트가 잘 표시되지만 목록보기 내부에 이미지가 설정되지 않은 것처럼 보입니다. 새 정보로 내 게시물을 업데이트했습니다. –

+0

UI 스레드에서 Drawable.createFromStream 메서드를 호출 할 수 없습니다. 그게 제가 생각하기에 실제 문제입니다. –

+0

정상적인 textview에서 사용하면 효과가 있습니다. –