java - adding AsyncTask to onClick listener -


this question has answer here:

i have made program works asynctask prints list of json data when program executed, problem want execute when press button. how results of asynctask onclick button listener ? how call asynctask onclick?

public class mainactivity extends actionbaractivity implements locationlistener {       double[] avstand;     jsonarray jarray;     locationmanager lm;     textview lt, ln;     string provider;     location l;     listview list;     stasjonadapter adapter;     arraylist<stasjoner> stasjonliste;     button nbutton;     textview test;     gpstracker gps;     stasjoner stasjon;     double minvalue;     string geouri;     button instbutton;     button bildebutton;     button kjortil;     button visliste;     file mphotofile;     uri mphotofileuri;     string mdisplayfolder;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          setcontentview(r.layout.activity_main);         ln=(textview)findviewbyid(r.id.vislong);         test=(textview)findviewbyid(r.id.test);         lt=(textview)findviewbyid(r.id.vislati);          gps = new gpstracker(mainactivity.this);          // check if gps enabled         if(gps.cangetlocation()){              double latitude = gps.getlatitude();             double longitude = gps.getlongitude();              // \n new line            // toast.maketext(getapplicationcontext(), "your location - \nlat: " + latitude + "\nlong: " + longitude, toast.length_long).show();         }else{             // can't location             // gps or network not enabled             // ask user enable gps/network in settings             gps.showsettingsalert();         }    //get latitude , longitude of location             double lat= gps.getlatitude();             double lng= gps.getlongitude();             //display on text view             ln.settext(""+lng);             lt.settext(""+lat);          list = (listview)findviewbyid(r.id.list);         stasjonliste = new arraylist<stasjoner>();         nbutton = (button)findviewbyid(r.id.button1);         instbutton = (button)findviewbyid(r.id.instillinger);         bildebutton = (button)findviewbyid(r.id.bildebutton);         kjortil= (button)findviewbyid(r.id.button);         visliste = (button)findviewbyid(r.id.visliste);         //new stasjonasynctask().execute("http://hotell.difi.no/?dataset=porsgrunn/elbilparkering?");       blogas url, jis grazina html puslapi, reikia daryt requesta api endpoint, kuris grazina json         new stasjonasynctask().execute("http://hotell.difi.no/api/json/porsgrunn/elbilparkering?");          instbutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent intent = new intent(mainactivity.this, instillinger.class);                 startactivity(intent);             }         });         nbutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 int value = (int) getminvalue(avstand);                 test.settext(stasjonliste.get(value).getlatitude().tostring());                 test.settext(stasjonliste.get(value).getlongtitude().tostring());                 string geouri = "geo:" + stasjonliste.get(value).getlatitude().tostring() + ","+ stasjonliste.get(value).getlongtitude().tostring() + "?z=";                 uri geo = uri.parse(geouri);                 intent geomap = new intent(intent.action_view,geo);                 startactivity(geomap);             }         });          visliste.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                  //stasjonasynctask              }         });          bildebutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent intent = new intent(mainactivity.this, customcameraactivity.class);                 startactivity(intent);             }         });         kjortil.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent intent = new intent(android.content.intent.action_view,                         uri.parse("http://maps.google.com/maps?saddr=" + gps.getlatitude() +"," + gps.getlongitude() + "&daddr=" + double.parsedouble(stasjon.getlatitude()) +","+double.parsedouble(stasjon.getlongtitude())));                 startactivity(intent);             }         });      }      @override     public void onlocationchanged(location location) {      }      @override     public void onstatuschanged(string provider, int status, bundle extras) {      }      @override     public void onproviderenabled(string provider) {      }      @override     public void onproviderdisabled(string provider) {      }       public class stasjonasynctask extends asynctask<string, void, boolean>{          @override         protected boolean doinbackground(string... urls) {             try {             httpclient client = new defaulthttpclient();             //httppost post = new httppost(urls[0]);    api endpointas nepriima post requestu, pakeiciam             httpget = new httpget(urls[0]);             httpresponse response = client.execute(get);              int status = response.getstatusline().getstatuscode();                 if(status == 200) {                      httpentity entity = response.getentity();                     string data = entityutils.tostring(entity);                      jsonobject jobj = new jsonobject(data);                     jarray = jobj.getjsonarray("entries");                     avstand = new double[jarray.length()];                      for(int i=0;i< jarray.length();i++){                         stasjon = new stasjoner();                          jsonobject jrealobject = jarray.getjsonobject(i);                           stasjon.setid(jrealobject.getstring("id"));                         stasjon.setkapasitet(jrealobject.getstring("kapasitet"));                         stasjon.setplassering(jrealobject.getstring("plassering"));                         stasjon.settilgjengelighet(jrealobject.getstring("tilgjengelighet"));                         stasjon.setbeskrivelse(jrealobject.getstring("beskrivelse"));                         stasjon.setnavn(jrealobject.getstring("navn"));                         stasjon.setlongtitude(jrealobject.getstring("longitude"));                         stasjon.setlatitude(jrealobject.getstring("latitude"));                         stasjon.settilgang(jrealobject.getstring("tilgang"));                         stasjon.settidsbegrensing(jrealobject.getstring("tidsbegrensing"));                          double dist = distance(double.parsedouble(stasjon.getlatitude()), double.parsedouble(stasjon.getlongtitude()), gps.getlatitude(),gps.getlongitude(), 'k');                         stasjon.setavstand(double.tostring(dist));                         avstand[i]= dist;                          stasjonliste.add(stasjon);                     }                     return true;                   }                 } catch (ioexception e) {                 e.printstacktrace();             } catch (jsonexception e) {                 e.printstacktrace();             }             return false;         }         protected void onpostexecute(boolean result) {             super.onpostexecute(result);             //arrays.sort(avstand);              minvalue = getminvalue(avstand);              //test.settext(double.tostring(minvalue));             if(result== false){              toast.maketext(getapplicationcontext(), "unable fetch data server", toast.length_long).show();              } else {                 stasjonadapter adapter = new stasjonadapter(getapplicationcontext(),r.layout.rad, stasjonliste);                 list.setadapter(adapter);             }         }          private double distance(double lat1, double lon1, double lat2, double lon2, char unit) {             double theta = lon1 - lon2;             double dist = math.sin(deg2rad(lat1)) * math.sin(deg2rad(lat2)) + math.cos(deg2rad(lat1)) * math.cos(deg2rad(lat2)) * math.cos(deg2rad(theta));             dist = math.acos(dist);             dist = rad2deg(dist);             dist = dist * 60 * 1.1515;             if (unit == 'k') {                 dist = dist * 1.609344;             } else if (unit == 'n') {                 dist = dist * 0.8684;             }             return (dist);         }         private double deg2rad(double deg) {             return (deg * math.pi / 180.0);         }         private double rad2deg(double rad) {             return (rad * 180.0 / math.pi);         }     }      public static double getminvalue(double[] numbers){         double minvalue = numbers[0];         int minvalueindex = 0;         for(int i=1;i<numbers.length;i++){             if(numbers[i] < minvalue){                 minvalue = numbers[i];                 minvalueindex = i;             }         }         return minvalueindex;     }  } 

in stasjonasynctask make activity class variable. , give it's instance when creating stasjonasynctask variable

public class stasjonasynctask extends asynctask<string, void, boolean>{ private mainactivity myactivity;  public stasjonasynctask(mainactivity myactivity){ this.myactivity=myactivity; } ... 

on creating stasjonasynctask give activity instance

new stasjonasynctask(this).execute("http://hotell.difi.no/api/json/porsgrunn/elbilparkering?"); 

in onpostexecute can call function of activity. separate onclick listener variable, easier understand.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -