gpt4 book ai didi

android - 如何在动态生成的按钮中设置特定 id 的文本

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:10 25 4
gpt4 key购买 nike

我有以下代码。在这里,我动态生成了按钮。单击按钮时,它会显示时间选择器。我的问题是设置点击按钮的时间但是它在最后一个按钮设置文本如何设置点击按钮的值...

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);

}
};

任何帮助都将不胜感激...

编辑:

错误日志:

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)

最佳答案

尝试更新特定按钮的文本

Button b=(Button)list.getChildAt(btn_cnt);
b.settext(time);

由于您将 Button Id 存储在 btn_cnt 中,因此可以使用 getChildAt(position) 获取 View

list 是您的 Layout,您可以在其中动态添加 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 b=(Button)list.getChildAt(btn_cnt);
b.settext(time);

mCalendar.set(Calendar.HOUR, hourOfDay);
mCalendar.set(Calendar.MINUTE, minute);

}
};

编辑:- 您可以使用 List 而不是 Array 从 Button 中检索所有时间。

List<String> listOfDate=new ArrayList<String>();
for(int i=0;i<list.getChildCount();i++)
{
Button b=(Button)list.getChildAt(i);
listOfDate.add(b.getText().toString());

}

希望对您有所帮助。

关于android - 如何在动态生成的按钮中设置特定 id 的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19653820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com