android - Some thumb_nails not appearing in rss feed( xml parser) -
i beginner in android. followed tutorial youtube develop rss feed app. xml parser used recycler view fetch rss feed. feed includes pubdate, link, title, description , thumb_nail(with of picasso library). of images appear if use fetch feed https://urbangospeltunez.wordpress.com/feed/ of images not appear if fetch feed https://u4norhome.wordpress.com/feed/. tried uploading images of different size, dimension , format (jpg , png) images still not show. how can make images show?
here xml parser code:
import android.app.progressdialog; import android.content.context; import android.os.asynctask; import android.support.v7.widget.linearlayoutmanager; import android.support.v7.widget.recyclerview; import android.widget.toast; import org.w3c.dom.document; import org.w3c.dom.element; import org.w3c.dom.node; import org.w3c.dom.nodelist; import java.io.inputstream; import java.net.httpurlconnection; import java.net.url; import java.util.arraylist; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; public class articlesrss extends asynctask<void, void, void> { context context; string address = "https://u4norhome.wordpress.com/feed/"; progressdialog progressdialog; arraylist<articlesfeeditem> articlesfeeditems; recyclerview recyclerview; url url; public articlesrss(context context,recyclerview recyclerview) { this.recyclerview=recyclerview; this.context = context; progressdialog = new progressdialog(context); progressdialog.setmessage("connecting..."); progressdialog.setcancelable(false); progressdialog.setcanceledontouchoutside(false); } @override protected void onpreexecute() { progressdialog.show(); super.onpreexecute(); } @override protected void oncancelled() { super.oncancelled(); } @override protected void onpostexecute(void avoid) { super.onpostexecute(avoid); progressdialog.dismiss(); articlesadapter adapter=new articlesadapter(context, articlesfeeditems); recyclerview.setlayoutmanager(new linearlayoutmanager(context)); recyclerview.additemdecoration(new verticalspace(3)); recyclerview.setadapter(adapter); //try toast toast.maketext(context, "connected!", toast.length_short).show(); } @override protected void doinbackground(void... params) { processxml(getdata()); return null; } private void processxml(document data) { if (data != null) { articlesfeeditems =new arraylist<>(); element root = data.getdocumentelement(); node channel = root.getchildnodes().item(1); nodelist items = channel.getchildnodes(); (int = 0; < items.getlength(); i++) { node cureentchild = items.item(i); if (cureentchild.getnodename().equalsignorecase("item")) { articlesfeeditem item=new articlesfeeditem(); nodelist itemchilds = cureentchild.getchildnodes(); (int j = 0; j < itemchilds.getlength(); j++) { node cureent = itemchilds.item(j); if (cureent.getnodename().equalsignorecase("title")){ item.settitle(cureent.gettextcontent()); }else if (cureent.getnodename().equalsignorecase("description")){ item.setdescription(cureent.gettextcontent()); }else if (cureent.getnodename().equalsignorecase("pubdate")){ item.setpubdate(cureent.gettextcontent()); }else if (cureent.getnodename().equalsignorecase("link")){ item.setlink(cureent.gettextcontent()); }else if (cureent.getnodename().equalsignorecase("media:content")){ //this return thumbnail url string url=cureent.getattributes().item(0).gettextcontent(); item.setthumbnailurl(url); } } articlesfeeditems.add(item); } } } } public document getdata() { try { url = new url(address); httpurlconnection connection = (httpurlconnection) url.openconnection(); connection.setrequestmethod("get"); inputstream inputstream = connection.getinputstream(); documentbuilderfactory builderfactory = documentbuilderfactory.newinstance(); documentbuilder builder = builderfactory.newdocumentbuilder(); document xmldoc = builder.parse(inputstream); return xmldoc; } catch (exception e) { e.printstacktrace(); return null; } } } feeditem
public class articlesfeeditem { string title; string link; string description; string pubdate; string thumbnailurl; public string gettitle() { return title; } public void settitle(string title) { this.title = title; } public string getlink() { return link; } public void setlink(string link) { this.link = link; } public string getdescription() { return description; } public void setdescription(string description) { this.description = description; } public string getpubdate() { return pubdate; } public void setpubdate(string pubdate) { this.pubdate = pubdate; } public string getthumbnailurl() { return thumbnailurl; } public void setthumbnailurl(string thumbnailurl) { this.thumbnailurl = thumbnailurl; } } recyclerviewadaptor
import android.content.context; import android.content.intent; import android.support.v7.widget.cardview; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview; import com.daimajia.androidanimations.library.techniques; import com.daimajia.androidanimations.library.yoyo; import com.squareup.picasso.picasso; import java.util.arraylist; public class articlesadapter extends recyclerview.adapter<articlesadapter.myviewholder> { arraylist<articlesfeeditem> articlesfeeditems; context context; public articlesadapter(context context,arraylist<articlesfeeditem> articlesfeeditems){ this.articlesfeeditems = articlesfeeditems; this.context=context; } @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype) { view view= layoutinflater.from(context).inflate(r.layout.articles_card,parent,false); myviewholder holder=new myviewholder(view); return holder; } @override public void onbindviewholder(myviewholder holder, int position) { // yoyo.with(techniques.fadein).playon(holder.cardview); final articlesfeeditem current= articlesfeeditems.get(position); holder.title.settext(current.gettitle()); holder.description.settext(current.getdescription()); holder.date.settext(current.getpubdate()); picasso.with(context).load(current.getthumbnailurl()).into(holder.thumbnail); holder.cardview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { intent intent = new intent(context, articleswebview.class); intent.putextra("link", current.getlink()); context.startactivity(intent); } }); } @override public int getitemcount() { return articlesfeeditems.size(); } public class myviewholder extends recyclerview.viewholder { textview title,description,date; imageview thumbnail; cardview cardview; public myviewholder(view itemview) { super(itemview); title= (textview) itemview.findviewbyid(r.id.title_text); description= (textview) itemview.findviewbyid(r.id.description_text); date= (textview) itemview.findviewbyid(r.id.date_text); thumbnail= (imageview) itemview.findviewbyid(r.id.thumb_img); cardview= (cardview) itemview.findviewbyid(r.id.articles_cardview); } } } articles activity
import android.content.activitynotfoundexception; import android.content.context; import android.content.dialoginterface; import android.content.intent; import android.net.connectivitymanager; import android.net.networkinfo; import android.net.uri; import android.os.bundle; import android.support.design.widget.floatingactionbutton; import android.support.v7.app.alertdialog; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.gridlayoutmanager; import android.support.v7.widget.recyclerview; import android.support.v7.widget.toolbar; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.animation.animation; import android.view.animation.animationutils; public class articles extends appcompatactivity { recyclerview recyclerview; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.articles_activity); if(!isnetworkconnected()){ alertdialog.builder builder = new alertdialog.builder(this); builder.setcancelable(false); builder.settitle("oops!"); builder.seticon(r.drawable.ic_error_wine_24dp); builder.setmessage("no internet connection."); builder.setpositivebutton("retry", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { //if user select "no", cancel dialog , continue app /* finish(); */ // try below // intent restartintent = new intent(home.this, home.class); // restartintent.setdata(getintent().getdata()); intent restartintent = getintent(); restartintent.setdata(getintent().getdata()); finish(); startactivity(restartintent); } }); builder.setnegativebutton("exit", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { //if user select "no", cancel dialog , continue app dialog.cancel(); finish(); } }); alertdialog alert = builder.create(); alert.show(); } else { if (isnetworkconnected()) { // startactivity(new intent(home.this, home.class)); recyclerview = (recyclerview) findviewbyid(r.id.recyclerview); articlesrss readrss = new articlesrss (this, recyclerview); readrss.execute(); } // return networkinfo != null; // } } toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); public boolean isnetworkconnected() { connectivitymanager cm = (connectivitymanager) this.getsystemservice(context.connectivity_service); networkinfo networkinfo = cm.getactivenetworkinfo(); return networkinfo != null; } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_articles, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); if (id == r.id.action_options) { intent intent = new intent (articles.this, settingsactivity.class); startactivity(intent); return true; } return super.onoptionsitemselected(item); } }
Comments
Post a Comment