android - Refreshing value at a list view when activity is re-opened back from another activity -


i need solve following concern have related activity.

an activity has list view showing json objects. when users taps on row, activity opens showing more details selected object. on second activity, user may click on button vote object. amount of votes increased one. then, if user goes previous activity, amount of given votes showed not updated, should updated taking account vote given user.

at first activity (list view) number of votes field given previous activity through intent:

first activity code (list):

import java.util.arraylist; import java.util.hashmap;  import android.content.context; import android.content.intent; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.imageview; import android.widget.textview;  public class empresas_listviewadapter extends baseadapter {      // declare variables     context context;     layoutinflater inflater;     arraylist<hashmap<string, string>> data;     imageloader imageloader;     hashmap<string, string> resultp = new hashmap<string, string>();      public empresas_listviewadapter(context context,             arraylist<hashmap<string, string>> arraylist) {         this.context = context;         data = arraylist;         imageloader = new imageloader(context);     }      @override     public int getcount() {         return data.size();     }      @override     public object getitem(int position) {         return null;     }      @override     public long getitemid(int position) {         return 0;     }      public view getview(final int position, view convertview, viewgroup parent) {         // declare variables         textview valoracionempresa;         textview nombreempresa;         textview direccionempresa;         imageview strimagen;         textview descripcionempresa;         textview telefonoempresa;         textview facebookempresa;         textview emailempresa;         textview textooferta;         textview horarioempresa;         textview latitudempresa;         textview longitudempresa;         textview idempresa;           inflater = (layoutinflater) context                 .getsystemservice(context.layout_inflater_service);          view itemview = inflater.inflate(r.layout.empresas_listview_item, parent, false);         // position         resultp = data.get(position);          // locate textviews in listview_item.xml         valoracionempresa = (textview) itemview.findviewbyid(r.id.valoracionempresa);         nombreempresa = (textview) itemview.findviewbyid(r.id.nombreempresa);         direccionempresa = (textview) itemview.findviewbyid(r.id.direccionempresa);          // locate imageview in listview_item.xml         strimagen = (imageview) itemview.findviewbyid(r.id.strimagen);          // capture position , set results textviews         valoracionempresa.settext(resultp.get(empresas_mainactivity.valoracionempresa));         nombreempresa.settext(resultp.get(empresas_mainactivity.nombreempresa));         direccionempresa.settext(resultp.get(empresas_mainactivity.direccionempresa));         // capture position , set results imageview         // passes flag images url imageloader.class         imageloader.displayimage(resultp.get(empresas_mainactivity.strimagen), strimagen);         // capture listview item click         itemview.setonclicklistener(new onclicklistener() {               @override             public void onclick(view arg0) {                 // position                 resultp = data.get(position);                 intent intent = new intent(context, empresas_singleitemview.class);                  // pass data rank                 intent.putextra("valoracionempresa", resultp.get(empresas_mainactivity.valoracionempresa));                  // pass data country                 intent.putextra("nombreempresa", resultp.get(empresas_mainactivity.nombreempresa));                 // pass data population                 intent.putextra("direccionempresa",resultp.get(empresas_mainactivity.direccionempresa));                 // pass data flag                 intent.putextra("strimagen", resultp.get(empresas_mainactivity.strimagen));                  intent.putextra("descripcionempresa",resultp.get(empresas_mainactivity.descripcionempresa));                 intent.putextra("telefonoempresa",resultp.get(empresas_mainactivity.telefonoempresa));                 intent.putextra("facebookempresa",resultp.get(empresas_mainactivity.facebookempresa));                 intent.putextra("emailempresa",resultp.get(empresas_mainactivity.emailempresa));                 intent.putextra("textooferta",resultp.get(empresas_mainactivity.textooferta));                 intent.putextra("horarioempresa",resultp.get(empresas_mainactivity.horarioempresa));                 intent.putextra("latitudempresa",resultp.get(empresas_mainactivity.latitudempresa));                 intent.putextra("longitudempresa",resultp.get(empresas_mainactivity.longitudempresa));                 intent.putextra("idempresa",resultp.get(empresas_mainactivity.idempresa));                     // start singleitemview class                 context.startactivity(intent);               }         });         return itemview;     } } 

second activity code (detail)

import java.io.bufferedinputstream; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstream; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url; import java.util.arraylist; import java.util.list;  import org.apache.http.httpresponse; import org.apache.http.namevaluepair; import org.apache.http.client.clientprotocolexception; import org.apache.http.client.httpclient; import org.apache.http.client.entity.urlencodedformentity; import org.apache.http.client.methods.httppost; import org.apache.http.impl.client.defaulthttpclient; import org.apache.http.message.basicnamevaluepair; import org.apache.http.util.bytearraybuffer;  import android.app.activity; import android.content.activitynotfoundexception; import android.content.context; import android.content.intent; import android.net.uri; import android.os.asynctask; import android.os.build; import android.os.bundle; import android.util.log; import android.view.view; import android.widget.imageview; import android.widget.progressbar; import android.widget.textview; import android.widget.toast;  public class empresas_singleitemview extends activity {     // declare variables     string valoracionempresa;     string nombreempresa;     string direccionempresa;     string descripcionempresa;     string telefonoempresa;     string facebookempresa;     string emailempresa;     string textooferta;     string horarioempresa;     string latitudempresa;     string longitudempresa;      string imagenstrimagen;     string idempresa;     string position;     private progressbar pb;      url aurl;         /* filled , displayed later. */         string astring = null;     @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         // view singleitemview.xml         imageloader imageloader = new imageloader(this);         setcontentview(r.layout.empresas_singleitemview);           intent = getintent();         // result of rank         valoracionempresa = i.getstringextra("valoracionempresa");           // result of country         nombreempresa = i.getstringextra("nombreempresa");           // result of population         direccionempresa = i.getstringextra("direccionempresa");          descripcionempresa = i.getstringextra("descripcionempresa");         telefonoempresa = i.getstringextra("telefonoempresa");         facebookempresa = i.getstringextra("facebookempresa");         emailempresa = i.getstringextra("emailempresa");         textooferta = i.getstringextra("textooferta");         horarioempresa = i.getstringextra("horarioempresa");         latitudempresa = i.getstringextra("latitudempresa");         longitudempresa = i.getstringextra("longitudempresa");         idempresa = i.getstringextra("idempresa");          // result of flag         imagenstrimagen = i.getstringextra("strimagen");           // locate textviews in singleitemview.xml         textview txtvaloracionempresa = (textview) findviewbyid(r.id.valoracionempresa);         textview txtnombreempresa = (textview) findviewbyid(r.id.nombreempresa);         textview txtdireccionempresa = (textview) findviewbyid(r.id.direccionempresa);         textview txtdescripcionempresa = (textview) findviewbyid(r.id.descripcionempresa);         textview txtofertaempresa = (textview) findviewbyid(r.id.textooferta);         textview txthorarioempresa = (textview) findviewbyid(r.id.horarioempresa);           // locate imageview in singleitemview.xml         imageview imagenempresa = (imageview) findviewbyid(r.id.strimagen);          // set results textviews         txtvaloracionempresa.settext(valoracionempresa);         txtnombreempresa.settext(nombreempresa);         txtdireccionempresa.settext(direccionempresa);         txtdescripcionempresa.settext(descripcionempresa);         txtofertaempresa.settext(textooferta);         txthorarioempresa.settext(horarioempresa);          // capture position , set results imageview         // passes flag images url imageloader.class         imageloader.displayimage(imagenstrimagen, imagenempresa);     }      public void openfacebook(view view)      {         string url = "http://es-es.facebook.com/pages/"+facebookempresa;         intent = new intent(intent.action_view);         i.setdata(uri.parse(url));         startactivity(i);       }     public void openemail(view view)      {         intent = new intent(intent.action_send);         i.settype("message/rfc822");         i.putextra(intent.extra_email  , new string[]{emailempresa});         i.putextra(intent.extra_subject, "email desde vive gran canaria app");         i.putextra(intent.extra_text   , "escribe aqui el texto de tu mensaje");         try {             startactivity(intent.createchooser(i, "send mail..."));         } catch (android.content.activitynotfoundexception ex) {             toast.maketext(empresas_singleitemview.this, "there no email clients installed.", toast.length_short).show();         }     }     public void openllamar(view view)      {          try {                 intent callintent = new intent(intent.action_call);                 callintent.setdata(uri.parse("tel:"+telefonoempresa));                 startactivity(callintent);             } catch (activitynotfoundexception e) {                 log.e("helloandroid dialing example", "call failed", e);             }     }     public void openvotar(view view)     {         log.i("response", "hemos entrado en openvotar: ");         connectiontask task = new connectiontask();         string[] params = new string[2];         string url = "http://xxxxx/cambiarvaloracionempresa.php?id="+idempresa;         params[0] = url;         //params[1] = somethingelseifneeded;         task.execute(params);   }     private class connectiontask extends asynctask<string, void, string>{         @override         protected string doinbackground(string... urls) {              url aurl;                 /* filled , displayed later. */                 string astring = null;                 try {         aurl = new url(                 urls[0]);          /* open connection url. */         final httpurlconnection ahttpurlconnection = (httpurlconnection) aurl.openconnection();          /* define inputstreams read urlconnection. */         inputstream ainputstream = ahttpurlconnection.getinputstream();         bufferedinputstream abufferedinputstream = new bufferedinputstream(                 ainputstream);          /* read bytes buffer until there nothing more read(-1) */         bytearraybuffer abytearraybuffer = new bytearraybuffer(50);         int current = 0;         while ((current = abufferedinputstream.read()) != -1) {             abytearraybuffer.append((byte) current);         }           /* convert bytes read string. */         astring = new string(abytearraybuffer.tobytearray());               } catch (ioexception e) {                    // log.d(tag, e.tostring());                 }             return astring;         }          @override         protected void onpostexecute(string result) {                    textview atextview;log.i("response json", result);                    textview txtvaloracionempresa = (textview) findviewbyid(r.id.valoracionempresa);                 txtvaloracionempresa.settext(result);      // result got connection     //atextview.settext(result);          }      }  } 

how refresh number of votes on first activity (list view) when user goes second activity (detail view)

you need call notifydatasetchanged() on adapter in order refresh listview.

adapter.notifydatasetchanged() should called after every change in datset. if doing in loop

for (int = ; ; ){ … … adapter.additem(item); adapter.notifydatasetchanged(); } 

otherwise can call after loop.

also, notifydatasetchanged() should called ui thread

check out http://developer.android.com/reference/android/widget/baseadapter.html#notifydatasetchanged()

also, helpful video

https://www.youtube.com/watch?v=wdbm6wveo70&t=17m38s


Comments

Popular posts from this blog

javascript - jquery or ashx not working -

opencv - DataType<cv::detail::deriv_type>::depth what is it used for -

python 3.x - Mapping specific letters onto a list of words -