2011-11-18 24 views
0

我有一个RSS阅读器从一个URL读取新闻,该URL包含图像中我能够检索图像的网址,但我无法显示他们在视图中。我使用下面的代码读取我的形象:Rss:图像链接检索,无法显示

url(myRssFeed.getList().get(position).getImageLink())

我要显示在列表视图图像。这是我的列表活动。请检查下面的代码:

public class AndroidRssReader extends ListActivity { 

private RSSFeed myRssFeed = null; 

TextView feedTitle; 
TextView feedDescribtion; 
TextView feedPubdate; 
TextView feedLink; 
ImageView feedImageView; 

public class MyCustomAdapter extends ArrayAdapter<RSSItem> { 

    public MyCustomAdapter(Context context, int textViewResourceId, 
      List<RSSItem> list) { 
     super(context, textViewResourceId, list); 
    } 
    RSSItem item; 
    RSSFeed feed; 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     //return super.getView(position, convertView, parent); 

     View row = convertView; 
     item = new RSSItem(); 
     feed = new RSSFeed(); 

     if(row==null){ 
      LayoutInflater inflater=getLayoutInflater(); 
      row=inflater.inflate(R.layout.row, parent, false); 
     } 

    ImageView imageView = (ImageView)row.findViewById(R.id.listimage); 

    /* 
     try{ 

     // String images = item.getImageLink(); 
       String images = myRssFeed.getThumbnail(); 
       System.out.println("=== IMAGE VIEW=======: "+ item.getImageLink()); 
       System.out.println("-------Tumbnail------: "+ feed.getThumbnail()); 

     //  String images = (myRssFeed.getList().get(position).getImageLink()); 
       Bitmap bitmap = BitmapFactory.decodeStream(new URL(images).openStream()); 

       System.out.println("------IAMGE--------: " + myRssFeed.getList().get(position).getImageLink()); 
       imageView.setImageBitmap(bitmap); 
       } catch (Exception e) { 
       System.out.println(e); 
       e.printStackTrace(); 
      } */ 
       String image = myRssFeed.getList().get(position).getImageLink(); 
       System.out.println("====IMAGE=====: " +myRssFeed.getList().get(position).getImageLink()); 
       System.out.println("====IMAGE=====: " + item.getImageLink()); 
       System.out.println("====IMAGE=====: " + feed.getThumbnail()); 
          Bitmap lBitmap; 
          try { 
           lBitmap = BitmapFactory.decodeStream(new URL(image).openStream()); 
           imageView.setImageBitmap(lBitmap); 
          } catch (MalformedURLException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } catch (IOException e) { 
           // TODO Auto-generated catch block 
           e.printStackTrace(); 
          } 





     TextView listTitle=(TextView)row.findViewById(R.id.listtitle); 
     listTitle.setText(myRssFeed.getList().get(position).getTitle()); 
     System.out.println("TITLE----: "+ myRssFeed.getTitle()); 
     TextView listPubdate=(TextView)row.findViewById(R.id.listpubdate); 
     listPubdate.setText(myRssFeed.getList().get(position).getPubdate()); 

     return row; 
    } 
} 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.main); 

    feedTitle = (TextView)findViewById(R.id.feedtitle); 
    feedDescribtion = (TextView)findViewById(R.id.feeddescribtion); 
    feedPubdate = (TextView)findViewById(R.id.feedpubdate); 
    feedLink = (TextView)findViewById(R.id.feedlink); 
    feedImageView = (ImageView)findViewById(R.id.feedimage); 

    feedTitle.setVisibility(View.GONE); 
    feedDescribtion.setVisibility(View.GONE); 
    feedPubdate.setVisibility(View.GONE); 
    feedLink.setVisibility(View.GONE); 

    readRss(); 
} 

private void readRss(){ 

    feedTitle.setText("--- wait ---"); 
    feedDescribtion.setText(""); 
    feedPubdate.setText(""); 
    feedLink.setText(""); 
// feedImageView.setImage(""); 
    setListAdapter(null); 

    Toast.makeText(this, "Reading RSS, Please wait.", Toast.LENGTH_LONG).show(); 

    try { 
     URL rssUrl = new URL("http://www.bedfordshire-news.co.uk/News/rss.xml"); 
     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) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ParserConfigurationException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    if (myRssFeed!=null) 
    { 
     Calendar c = Calendar.getInstance(); 
     String strCurrentTiime = "\n(Time of Reading - " 
           + c.get(Calendar.HOUR_OF_DAY) 
           + " : " 
           + c.get(Calendar.MINUTE) + ")\n"; 

     feedTitle.setText(myRssFeed.getTitle() + strCurrentTiime); 
     feedDescribtion.setText(myRssFeed.getDescription()); 
     feedPubdate.setText(myRssFeed.getPubdate()); 
     feedLink.setText(myRssFeed.getLink()); 

     Bundle lBundle = new Bundle(); 
      lBundle.putString("url", myRssFeed.getThumbnail()); 
      System.out.println("---myRSSFeed-- THUMBNAIL--- " + myRssFeed.getThumbnail()); 
      Message msg = new Message(); 
      msg.setData(lBundle); 
     // handler.dispatchMessage(msg); 


     MyCustomAdapter adapter = 
      new MyCustomAdapter(this, R.layout.row, myRssFeed.getList()); 
     setListAdapter(adapter); 

    } 

} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    // TODO Auto-generated method stub 
    Intent intent = new Intent(this,ShowDetails.class); 
    Bundle bundle = new Bundle(); 
    bundle.putString("keyTitle", myRssFeed.getItem(position).getTitle()); 
    bundle.putString("keyDescription", myRssFeed.getItem(position).getDescription()); 
    bundle.putString("keyLink", myRssFeed.getItem(position).getLink()); 
    bundle.putString("keyPubdate", myRssFeed.getItem(position).getPubdate()); 
    bundle.putString("keyImageView",myRssFeed.getItem(position).getImageLink()); 
    intent.putExtras(bundle); 
    startActivity(intent); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub 
    menu.add(0, 0, 0, "Reload"); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // TODO Auto-generated method stub 
    switch(item.getItemId()){ 
    case (0): readRss(); 

      break; 
    default: 
      break; 
    } 

    return true; 
} 


} 

请让我知道我将如何设置图像。

+0

检查你有介质中的所有网址:略图标签? –

回答

0
Either download that image from the following url in AsyncTask and then set it to Imageview. 

或者只是通过给定的方法在Listview的Textview中设置rss新闻的图像。

您可以使用图像getter方法,这和列表视图中的TextView的显示图像..

Spanned spannedContent = Html.fromHtml(htmlString, new ImageGetter() { 

     @Override 
     public Drawable getDrawable(String source) { 
      // get image from url 
     } 
    }, null); 
+0

@Chandu:你可能也想看看[Fedor的懒加载](http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images -in-列表视图/ 3068012#3068012) –