Android - 动态添加listview中的新按钮

时间:2013-12-11 13:22:13

标签: android button

我有一个带有两个线性布局的Listview,并且有一个按钮添加新行。当我点击添加新行按钮时,我想动态创建新的按钮行。之后,单击该创建的按钮,我想显示一个时间选择器对话框。当用户点击设置时间按钮时,我想在该按钮中设置该时间。我的问题是所有的按钮(具有不同的ID)都被添加好了,当点击该按钮时,弹出了时间选择器对话框。但点击设置时间按钮后,时间将不会设置。如何将此时间添加到按钮。我该如何处理这个按钮?

这是我在listview onscroll listener

中的一段代码
final LinearLayout l1 = LinearLayout) List_Layout.getChildAt(0);
LinearLayout l12 = (LinearLayout) List_Layout.getChildAt(1);    
final Button button = new Button(getApplicationContext());
final Button button1 = new Button(getApplicationContext());

add_button.setOnClickListener(new OnClickListener()
{
    public void onClick(View v) 
    {
        button.setLayoutParams(lparams);
        button1.setLayoutParams(lparams);
        button.setId(0);
        button1.setId(1);
        l1.addView(button, lparams);
        l12.addView(button1, lparams);
    }
}
button.setOnClickListener(new OnClickListener() 
{
    @SuppressWarnings("deprecation")
    public void onClick(View v) 
    {
        showDialog(TIME_DIALOG_ID);
    }
}
button1.setOnClickListener(new OnClickListener()
{
    @SuppressWarnings("deprecation")
    public void onClick(View v) 
    {
        // TODO Auto-generated method stub
        Log.e("tag 1", button1.getTag()+"");
        showDialog(TIME_DIALOG_ID);
    }
});

timepicker对话框的其余代码工作正常

这只是示例代码

请有人帮我摆脱这个谜语。

enter image description here

编辑:

static final int TIME_DIALOG_ID = 998;
private int hour;
    private int minute;
@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
case TIME_DIALOG_ID:

            return new TimePickerDialog(this, 
                    timePickerListener, hour, minute,false);
}
return null;
}
private TimePickerDialog.OnTimeSetListener timePickerListener = 
            new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int selectedHour,
                int selectedMinute) {
hour = selectedHour;
            minute = selectedMinute;
}
}

1 个答案:

答案 0 :(得分:0)

您需要将buttonbutton1的文字设置为用户实际选择的时间。为此,请在button.setText(<formatted time>)中编写一些timePickerListener

这是一些代码,我用来格式化java.util.Date对象的日期和时间:

Date date = new Date();
java.text.DateFormat dateFormat = DateFormat.getMediumDateFormat(context);
java.text.DateFormat timeFormat = DateFormat.getTimeFormat(context);
button.setText(String.format("%s %s", dateFormat.format(date), timeFormat.format(date)));

在时间选择器的情况下,您可以将选定的值格式化为字符串:

button.setText(String.format("%02d:%02d", selectedHour, selectedMinute));