Wednesday, 15 September 2010

android - How to use AsyncTask to display URL image in PaperAdapter -



android - How to use AsyncTask to display URL image in PaperAdapter -

finally, alter code , utilize univeral-image-loader library

i utilize paperadapter display url image code ,it works fine.

@override public object instantiateitem(final viewgroup container, final int position) { drawable[] imagedrawable = new drawable[3]; (int = 0; < 3; i++) { imagedrawable[i] = loadimagefromweboperations(server_url+ image_name.replace(" ","")+ "_0" +string.valueof(i + 1) + ".jpg"); } imageview = new imageview(mcontext); imageview.setscaletype(imageview.scaletype.center_crop); imageview.setimagedrawable(imagedrawable[position]); container.addview(imageview, 0); homecoming imageview; }

but want utilize asynctask this,like code

@override public object instantiateitem(final viewgroup container, final int position) { asynctask<string, void, drawable[]> loadingimage = new asynctask<string, void, drawable[]>(){ @override protected drawable[] doinbackground(string... params) { // todo auto-generated method stub drawable imagedrawable[] = new drawable[3]; (int = 0; < 3; i++) { imagedrawable[i] = loadimagefromweboperations(server_url + image_name.replace(" ","")+ "_0" + string.valueof(i + 1) + ".jpg"); system.out.println("doinbackground="+position); } homecoming imagedrawable; } @override protected void onpostexecute(drawable[] result) { system.out.println("onpostexecute="+position); imageview = new imageview(getbasecontext()); imageview.setscaletype(imageview.scaletype.center_crop); imageview.setimagedrawable(result[position]); container.addview(imageview, 0); } }); } }; loadingimage.execute(); homecoming imageview; }

it not work fine.i found position "1" null without image,but position 0 , 2 not null,waiting suggestion,thanks!

this code :

public class productdetailactivity1 extends fragmentactivity { imageadapter madapter; viewpager mpager; circlepageindicator mindicator; private string server_url; imageview imageview; protected scrollview mscrollview; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_product_detail1); mscrollview = (scrollview)findviewbyid(r.id.card_scrollview); getactionbar(); getactionbar().sethomebuttonenabled(true); getactionbar().setdisplayhomeasupenabled(true); getactionbar().setdisplayshowtitleenabled(true); getactionbar().settitle(r.string.product_detail); intent intent = getintent(); server_url = intent.getstringextra("server_url"); madapter = new imageadapter(getapplicationcontext()); mpager = (viewpager) findviewbyid(r.id.imageviewpager); mpager.setadapter(madapter); mindicator = (circlepageindicator) findviewbyid(r.id.indicator); mindicator.setviewpager(mpager); mindicator.setfillcolor(0xffffffff); mindicator.setstrokecolor(0xffffffff); mindicator.setstrokewidth(1); mindicator.setradius(6 * getresources().getdisplaymetrics().density); ((circlepageindicator) mindicator).setsnap(true); mindicator .setonpagechangelistener(new viewpager.onpagechangelistener() { @override public void onpageselected(int position) { } @override public void onpagescrolled(int position, float positionoffset, int positionoffsetpixels) { } @override public void onpagescrollstatechanged(int state) { } }); } @override public boolean onoptionsitemselected(menuitem item) { switch (item.getitemid()) { case android.r.id.home: intent intent = new intent(productdetailactivity1.this, com.wangrui.ams.mainactivity.class); intent.addflags(intent.flag_activity_clear_top); startactivity(intent); homecoming true; default: homecoming super.onoptionsitemselected(item); } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.product_detail, menu); homecoming true; } public class imageadapter extends pageradapter { private context mcontext; private drawable[] imagedrawable = new drawable[3];; public imageadapter(context cx) { mcontext = cx.getapplicationcontext(); } @override public object instantiateitem(final viewgroup container, final int position) { asynctask<void, void, drawable[]> loadingimage = new asynctask<void, void, drawable[]>(){ @override protected drawable[] doinbackground(void... params) { // todo auto-generated method stub (int = 0; < 3; i++) { imagedrawable[i] = loadimagefromweboperations(server_url + image_name.replace(" ","")+ "_0" + string.valueof(i + 1) + ".jpg"); system.out.println("position="+i); } homecoming imagedrawable; } @override protected void onpostexecute(drawable[] result) { imageview = new imageview(mcontext); imageview.setscaletype(imageview.scaletype.center_crop); imageview.setimagedrawable(result[position]); mpager.getadapter().notifydatasetchanged(); ((viewpager) container).addview(imageview, position); } }; loadingimage.execute(); homecoming imageview; } @override public int getcount() { // todo auto-generated method stub homecoming 3; } @override public boolean isviewfromobject(final view view, final object object) { // todo auto-generated method stub //return arg0 == (view) arg1; homecoming view == ((imageview) object); } @override public void destroyitem(viewgroup container, int position, object object) { container.removeview((imageview) object); } } private void showalertmessage(string msg){ supertoast supertoast = new supertoast(getapplicationcontext()); supertoast.setanimations(supertoast.animations.flyin); supertoast.setduration(supertoast.duration.long); supertoast.setbackground(supertoast.background.red); supertoast.settextsize(supertoast.textsize.extra_small); supertoast.settext(msg); supertoast.show(); } private drawable loadimagefromweboperations(string url) { seek { strictmode.threadpolicy policy = new strictmode.threadpolicy.builder() .permitall().build(); strictmode.setthreadpolicy(policy); inputstream = (inputstream) new url(url).getcontent(); drawable d = drawable.createfromstream(is, "src name"); homecoming d; } grab (exception e) { system.out.println("exc=" + e); homecoming null; } } }

android

No comments:

Post a Comment