android - Update data into List Item using Tap on button -


i using custom date , time picker (datetimepicker in single dialog)

when tap on button in list item select date , time , after successful selection when dialog closes , list view comes foreground not getting updated data list item, when again tap on button it's updating list item...

so reasons ?

mehtod 1

@override public view getview(final int position, view convertview, viewgroup parent) {     // convert view = design     view view = convertview;     if (view == null) {         holder = new viewholder();         view = inflater.inflate(resource, null);           holder.textdate = (textview) view.findviewbyid(r.id.textdate);         holder.texttime = (textview) view.findviewbyid(r.id.texttime);           view.settag(holder);     }     else      {         holder = (viewholder) view.gettag();     }        holder.textdate.settext(appointmentsarraylist.get(position).getdate());     holder.texttime.settext(appointmentsarraylist.get(position).gettime());       holder.buttonreschedule.setonclicklistener(new onclicklistener() {          @override         public void onclick(view v) {             // todo auto-generated method stub             appointmentsactivity.customdatetimepicker.showdialog();                          appointmentsarraylist.get(position).setdate(appointmentsactivity.strselecteddate);             appointmentsarraylist.get(position).settime(appointmentsactivity.strselectedtime);             try {                 log.d("setdate:- ", appointmentsarraylist.get(position).getdate());                  log.d("settime:- ", appointmentsarraylist.get(position).gettime());              } catch (exception e) {                 // todo: handle exception             }                            notifydatasetchanged();         }     }); 

and using below code in oncreate() of activity:

customdatetimepicker = new customdatetimepicker(this,                 new customdatetimepicker.icustomdatetimelistener() {                      @override                     public void onset(dialog dialog, calendar calendarselected,                             date dateselected, int year, string monthfullname,                             string monthshortname, int monthnumber, int date,                             string weekdayfullname, string weekdayshortname,                             int hour24, int hour12, int min, int sec,                             string am_pm) {                               strselecteddate = calendarselected                                 .get(calendar.day_of_month)                                 + " " + monthshortname + " " + year;                              strselectedtime = hour12 + ":" + min                                     + " " + am_pm;                          adapter.notifydatasetchanged();                          toast.maketext(appointmentsactivity.this, strselecteddate+", "+strselectedtime, toast.length_long).show();                      }                      @override                     public void oncancel() {                      }                 });         /**          * pass directly current time format return , pm if set          * false          */         customdatetimepicker.set24hourformat(false);         /**          * pass directly current data , time show when pop          */         customdatetimepicker.setdate(calendar.getinstance()); 

method: 2

note:- using code in oncreate(), it's updating first list item every time:

              int position = 0;               ................                     strselectedtime = strhour + ":" + strmin                                     + " " + am_pm;                              appointmentsarraylist.get(position).setdate(strselecteddate);                             appointmentsarraylist.get(position).settime(strselectedtime);                             try {                                 log.d("setdate:- ", appointmentsarraylist.get(position).getdate());                                  log.d("settime:- ", appointmentsarraylist.get(position).gettime());                             } catch (exception e) {                                 // todo: handle exception                             }                                     adapter.notifydatasetchanged();                          toast.maketext(appointmentsactivity.this, strselecteddate+", "+strselectedtime, toast.length_long).show(); 

adapter.java:

holder.buttonreschedule.setonclicklistener(new onclicklistener() {              @override             public void onclick(view v) {                 // todo auto-generated method stub                 appointmentsactivity.customdatetimepicker.showdialog();                               notifydatasetchanged();             }         }); 

you need create function in activity class , pass arraylist item

//change type type class of arraylist using public void showdatepicker(foo foo){    mfoo=foo  //mfoo global variable     customdatetimepicker.showdialog(); } 

call function inside onclick()

foo foo=appointmentsarraylist.get(position); appointmentsactivity.showdatepicker(foo); 

and inside onset() function

onset(.. ..){    ... mfoo.setdate(strselecteddate); mfoo.settime(strselectedtime);  adapter.notifydatasetchanged(); } 

Comments