I have the following code. In this i have dynamically generated buttons.when click the button it shows the timepicker. My problem is to set the time for clicked button but it set the text at the last button how to set the value at clicked button...
public void addButton(int value) {
list.removeAllViews();
for (i=0 ; i < value; i++) {
button = new Button(this);
button.setText("Add Time");
button.setId(i);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Calendar mCalendar = Calendar.getInstance();
new TimePickerDialog(MedInfo.this, onTimeListener, mCalendar
.get(Calendar.HOUR_OF_DAY), mCalendar.get(Calendar.MINUTE), false)
.show();
btn_cnt = v.getId();
Toast.makeText(getApplicationContext(), ""+btn_cnt, Toast.LENGTH_SHORT).show();
}
});
list.addView(button);
}
}
TimePickerDialog.OnTimeSetListener onTimeListener = new OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String AM_PM;
Calendar mCalendar = Calendar.getInstance();
if (hourOfDay < 12) {
AM_PM = "AM";
} else {
AM_PM = "PM";
}
long start_time = DateTimeUtils.getTimeInMillis(hourOfDay, minute, 0);
Calendar calendar = Calendar.getInstance();
long mseconds = DateTimeUtils.getFirstMillis(calendar.get(Calendar.DATE),
calendar.get(Calendar.MONTH), calendar.get(Calendar.YEAR));
time = start_time + mseconds;
button.settext(time);
mCalendar.set(Calendar.HOUR, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);
}
};
any help will be appreciable...
Edit :
error log:
10-29 15:07:32.478: E/AndroidRuntime(6401): FATAL EXCEPTION: main
10-29 15:07:32.478: E/AndroidRuntime(6401): java.lang.NullPointerException
10-29 15:07:32.478: E/AndroidRuntime(6401): at com.example.medicationreminder.MedInfo$MyOnTimeSetListenter.onTimeSet(MedInfo.java:237)
10-29 15:07:32.478: E/AndroidRuntime(6401): at android.app.TimePickerDialog.tryNotifyTimeSet(TimePickerDialog.java:130)
10-29 15:07:32.478: E/AndroidRuntime(6401): at android.app.TimePickerDialog.onClick(TimePickerDialog.java:115)
Simply create a global variable and set its value onTimeListener and whenever required setText(global_variable)
One possible solution is to implement a custom
OnTimeSetListener
which can keep reference to the clicked button. Before you show the time picker, inform the custom listener which button was clicked. See code below:Try like to update the text of particular Button
As you are storing the
Button Id
in btn_cnt, so can get the view withgetChildAt(position)
Where list is your
Layout
where you adding theButton dynamically
.Edit:- You can use
List
instead ofArray
for retrieving all the time from Button.Hope this will help you.