i have a RSS reader which reads news from an url, the url contains images in the i'm able to retrieve the url of the image but i'm not able to display them in the view. i'm reading my image using the following code:
url(myRssFeed.getList().get(position).getImageLink())
i want the image to be displayed in the listview. this is my list activity. please have a review of the code below:
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;
}
}
Please let me know how would i set the image.