java - From Json To ViewPager -
i'm trying pass data json file viewpager. have followed of advice given me here returns blank, without crashing.
the 4 files involved in this: 1. main fragment:
public class fashionfeed extends fragment { viewpager viewpager; pageradapter adapter; thepageradapter newdapter; public static final string url = "http://celebirious.com/bey/data/space.json"; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view v = inflater.inflate(r.layout.fragment_whats_hot, null); // locate viewpager in viewpager_main.xml viewpager = (viewpager) v.findviewbyid(r.id.pager); viewpager.setcliptopadding(false); viewpager.setpadding(4, 0, 4, 0); int margin = (int) typedvalue.applydimension(typedvalue.complex_unit_dip, 20 * 2, getresources().getdisplaymetrics()); viewpager.setpagemargin(-margin); new simpletask().execute(url); return v; } private class simpletask extends asynctask<string, void, string> { @override protected void onpreexecute() { // create show progressbar } protected string doinbackground(string... urls) { string result = ""; try { httpget httpget = new httpget(urls[0]); httpclient client = new defaulthttpclient(); httpresponse response = client.execute(httpget); int statuscode = response.getstatusline().getstatuscode(); if (statuscode == 200) { inputstream inputstream = response.getentity().getcontent(); bufferedreader reader = new bufferedreader (new inputstreamreader(inputstream)); string line; while ((line = reader.readline()) != null) { result += line; } } } catch (clientprotocolexception e) { } catch (ioexception e) { } return result; } protected void onpostexecute(string jsonstring) { showdata(jsonstring); } } private void showdata(string jsonstring) { gson gson = new gson(); style style = gson.fromjson(jsonstring, style.class); list<space> space = style.getspace(); newdapter = new thepageradapter(getactivity(), space); viewpager.setadapter(newdapter); } }
the adapter extending pager:
public class thepageradapter extends pageradapter { list<space> list; layoutinflater inflater; context context; @override public int getcount() { return list.size(); } @override public boolean isviewfromobject(view view, object object) { return false; } public thepageradapter(context context,list<space> list) { this.list = list; this.context = context; // red } @override public object instantiateitem(viewgroup container, int position) { // declare variables textview txtrank; textview txtcountry; textview txtpopulation; imageview imgflag; inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view itemview = inflater.inflate(r.layout.styledeets, container, false); // locate textviews in viewpager_item.xml txtrank = (textview) itemview.findviewbyid(r.id.date); txtcountry = (textview) itemview.findviewbyid(r.id.where); txtpopulation = (textview) itemview.findviewbyid(r.id.info); // capture position , set textviews txtrank.settext(list.get(position).getname()); txtcountry.settext(list.get(position).getdates()); txtpopulation.settext(list.get(position).getinfo()); string url = (list.get(position).getavatarurl()); imgflag = (imageview) itemview.findviewbyid(r.id.photo); picasso.with(context) .load(url) .placeholder(r.mipmap.ic_launcher) .error(r.drawable.ic_launcher_gmail) .fit() .tag(context) .into(imgflag); // locate imageview in viewpager_item.xml // capture position , set imageview //imgflag.setimageresource(flag[position]); // add viewpager_item.xml viewpager ((viewpager) container).addview(itemview); return itemview; } @override public void destroyitem(viewgroup container, int position, object object) { // remove viewpager_item.xml viewpager ((viewpager) container).removeview((relativelayout) object); } }
gson data retreived jsonschema2pojo.org:
space.java
public class space { @expose private string name; @expose private string dates; @expose private string type; @expose private string social; @expose private string info; @serializedname("avatar_url") @expose private string avatarurl; /** * * @return * name */ public string getname() { return name; } /** * * @param name * name */ public void setname(string name) { this.name = name; } /** * * @return * dates */ public string getdates() { return dates; } /** * * @param dates * dates */ public void setdates(string dates) { this.dates = dates; } /** * * @return * type */ public string gettype() { return type; } /** * * @param type * type */ public void settype(string type) { this.type = type; } /** * * @return * social */ public string getsocial() { return social; } /** * * @param social * social */ public void setsocial(string social) { this.social = social; } /** * * @return * info */ public string getinfo() { return info; } /** * * @param info * info */ public void setinfo(string info) { this.info = info; } /** * * @return * avatarurl */ public string getavatarurl() { return avatarurl; } /** * * @param avatarurl * avatar_url */ public void setavatarurl(string avatarurl) { this.avatarurl = avatarurl; }
lastly, style.java
public class style { @expose private list<space> space = new arraylist<space>(); /** * * @return * space */ public list<space> getspace() { return space; } /** * * @param space * space */ public void setspace(list<space> space) { this.space = space; } }
all xml data linked 'cause works when retrieving data locally. wrong?
i figured out !!!!! how silly of me.
was
@override public boolean isviewfromobject(view view, object object) { return false; }
should have been:
@override public boolean isviewfromobject(view view, object object) { return view == ((relativelayout) object); }
Comments
Post a Comment