android - Using AsyncTask to load more than two images in daimajia-AndroidImageSlider with jsonData -
i'm using https://github.com/daimajia/androidimageslider slider three images.and here i've tried in asynctask
load 3 image json data
:
public class asynchttptask extends asynctask<string, void, integer> { public progressdialog pdialog; @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(mainactivity.this); pdialog.setindeterminate(false); pdialog.setmessage("loading, please wait..."); pdialog.setcancelable(true); pdialog.show(); } @override protected integer doinbackground(string... params) { integer result = 0; httpurlconnection urlconnection; try { /* forming th java.net.url object */ url url = new url(params[0]); urlconnection = (httpurlconnection) url.openconnection(); /* request */ urlconnection.setrequestmethod("get"); int statuscode = urlconnection.getresponsecode(); /* 200 represents http ok */ if (statuscode == 200) { bufferedreader r = new bufferedreader(new inputstreamreader(urlconnection.getinputstream())); stringbuilder response = new stringbuilder(); string line; while ((line = r.readline()) != null) { response.append(line); } parseresult(response.tostring()); result = 1; }else{ result = 0; //"failed fetch data!"; } } catch (exception e) { toast.maketext(mainactivity.this, e.getlocalizedmessage(), toast.length_short).show(); } return result; //"failed fetch data!"; } @override protected void onpostexecute(integer result) { /* download complete. lets update ui */ if (result == 1) { adapter = new myrecycleradapter(mainactivity.this, feeditemlist); mmrecyclerview.setadapter(adapter); pdialog.dismiss(); } else { toast.maketext(mainactivity.this, "failed fetch data!", toast.length_short).show(); } } }
of course load need use on oncreate
:
final string url = "http://url/data.json"; //json data url new asynchttptask().execute(url); //execute json data
so, have 3 image in jsondata
:
"main-header": [ { "headerimg1": "http://url/main1.jpg", "title": "title 1" }, { "headerimg2": "http://url/main2.jpg", "title": "title 2" }, { "headerimg3": "http://url/main2.jpg", "title": "title 3" } ]
// jsondata working witout problem.but,
what can show these 3 images in slider above jsondata
?
edit: here i've done on oncreate , this, worked fine need json data loaded:
mdemoslider = (sliderlayout) findviewbyid(r.id.slider); hashmap<string, string> url_maps = new hashmap<>(); url_maps.put("title1", "http://url/pic1.jpg"); url_maps.put("title2", "http://url/pic3.jpg"); url_maps.put("title3", "http://url/pic3.jpg"); (string name : url_maps.keyset()) { textsliderview textsliderview = new textsliderview(this); // initialize sliderlayout textsliderview .description(name) .image(url_maps.get(name)) .setscaletype(basesliderview.scaletype.fit); //add information textsliderview.bundle(new bundle()); textsliderview.getbundle() .putstring("extra", name); mdemoslider.addslider(textsliderview); } mdemoslider.setpresettransformer(sliderlayout.transformer.accordion); mdemoslider.setpresetindicator(sliderlayout.presetindicators.right_bottom); mdemoslider.setcustomanimation(new descriptionanimation()); mdemoslider.setduration(6000);
any appreciated.
cheers!
this how supposed it. use code in asynctask's onpostexecute method.
arraylist = new arraylist<hashmap<string, string>>(); jsonobject jsonresponse; try { jsonresponse = new jsonobject(result); jsonarray jsonmainnode = jsonresponse.optjsonarray("main-header"); int lengthjsonarr = jsonmainnode.length(); for(int i=0; < lengthjsonarr; i++) { hashmap<string, string> map = new hashmap<string, string>(); jsonobject jsonchildnode = jsonmainnode.getjsonobject(i); map.put(jsonchildnode.getstring("title"),jsonchildnode.getstring("headerimg2")); arraylist.add(map); for(string name : map.keyset()){ textsliderview textsliderview = new textsliderview(mainactivity.this); textsliderview .description(name) .image(map.get(name)) .setscaletype(basesliderview.scaletype.fit) .setonsliderclicklistener(mainactivity.this); textsliderview.bundle(new bundle()); textsliderview.getbundle() .putstring("extra", name); mdemoslider.addslider(textsliderview); } mdemoslider.setpresettransformer(sliderlayout.transformer.accordion); mdemoslider.setpresetindicator(sliderlayout.presetindicators.center_bottom); mdemoslider.setcustomanimation(new descriptionanimation()); mdemoslider.setduration(4000); mdemoslider.addonpagechangelistener(mainactivity.this); } } catch (jsonexception e) { e.printstacktrace(); } }
Comments
Post a Comment