android - How to Change Listview Button name After sending a server request inside a custom adapter class? -


recently i'm working on online based student teacher communication application. in app there part student have send teacher request add in class.

enter image description here

here custom adapter getview code i'm sending request using listview custiom button. want place asynctask code inside adapter class.but can't able that. inside listview onclick button method can't recognizing asynctask method. placed asynctask method in class. want place asyntask method in adapter class because want change button name "request" "sent" after sending request in onpostexecute method . manually changed button name want ensure user request 100% sent. please tell me have place asynctask method in adapter class can change button name. million in advance.

package project.cc.student; import java.util.arraylist; import org.apache.http.namevaluepair; import org.apache.http.message.basicnamevaluepair; import com.example.connectifyclassroom.r; import android.content.context; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.arrayadapter; import android.widget.button; import android.widget.textview; import android.widget.toast;  public class subjectadapter extends arrayadapter<subject> {     arraylist<subject> contactlist;     layoutinflater vi;     int resource;     viewholder holder;     int studentid;     sendrequest sendrequest;     string requesturl;     arraylist<namevaluepair> params;     public subjectadapter(context context, int resource, arraylist<subject> objects,int studentid) {         super(context, resource, objects);         vi = (layoutinflater) context.getsystemservice(context.layout_inflater_service);         resource = resource;         contactlist = objects;         this.studentid = studentid;         log.d("bug", "studentid" + studentid);         params = new arraylist<namevaluepair>();      }         @override         public view getview( final int position, view convertview, viewgroup parent) {             // convert view = design             view v = convertview;             if (v == null) {                 holder = new viewholder();                 v = vi.inflate(resource, null);                 holder.tvsubject = (textview) v.findviewbyid(r.id.tvsujectname);                 holder.tvteacher = (textview) v.findviewbyid(r.id.tvteachername);                 holder.btsendrequest =  (button) v.findviewbyid(r.id.bt_send_subject_request);                 holder.btsendrequest.setonclicklistener(new button.onclicklistener() {                      @override                     public void onclick(view view) {                         // todo auto-generated method stub                          integer pos = (integer)view.gettag();                         button b = (button) view;                         sendrequest = new sendrequest();                         toast.maketext(getcontext(),"please wait...", toast.length_short).show();                          params.add(new basicnamevaluepair("studentid", integer.tostring(studentid)));                         params.add(new basicnamevaluepair("teacherid", integer.tostring(contactlist.get(pos).getteacheruid())));                         params.add(new basicnamevaluepair("subjectid", integer.tostring(contactlist.get(pos).getsubjectuid())));                         sendrequest.setpair(params);                         sendrequest.startrequest();                         toast.maketext(getcontext(),"request sent", toast.length_short).show();                         b.settext("sent");                        }                 });                 v.settag(holder);             } else {                 holder = (viewholder) v.gettag();             }          holder.tvsubject.settext(contactlist.get(position).getsubject());         holder.tvteacher.settext(contactlist.get(position).getteacher());         holder.btsendrequest.settag(position);          return v;      }      static class viewholder {         public textview tvsubject;         public textview tvteacher;         public button btsendrequest;      } } 

i recomend solve problem via callback.

to this, create interface (e.g. requeststatuscallback) contains method onrequestsended.

  1. now let subjectadapter implement interface. -> onrequestsended() changes appearance of button.

  2. create ctor in sendrequest, expect requeststatuscallback instance. save instance variable.

  3. if sendrequest has sended request succesfully, call onrequestsended method of callback.

so, if request has been sended, button updated. can add further callbacks "onrequestfailed()" , on...


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -