如何设置在特定的ID动态生成的按钮上的文本 [英] How to set the text at particular id in dynamic generated Button

查看:224
本文介绍了如何设置在特定的ID动态生成的按钮上的文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的code。在这方面,我已经动态生成buttons.when点击它显示了timepicker的按钮。我的问题是,设置时间,点击按钮,但它设置在最后一个按钮上的文本如何在按下按钮的设定值...

 公共无效Add按钮(int值){
    list.removeAllViews();    对于(i = 0; I<值; I ++){
        按钮=新按钮(本);
        button.setText(添加时间);
        button.setId(ⅰ);        button.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){
                日历mCalendar = Calendar.getInstance();
                新TimePickerDialog(MedInfo.this,onTimeListener,mCalendar
                        获得(Calendar.HOUR_OF_DAY),mCalendar.get(Calendar.MINUTE),FALSE)
                        。显示();
                btn_cnt = v.getId();
                Toast.makeText(getApplicationContext(),+ btn_cnt,Toast.LENGTH_SHORT).show();
            }
        });
        list.addView(按钮);
    }
}
TimePickerDialog.OnTimeSetListener onTimeListener =新OnTimeSetListener(){    公共无效onTimeSet(TimePicker观点,诠释HOUROFDAY,分整型){
        串AM_PM;
        日历mCalendar = Calendar.getInstance();
        如果(HOUROFDAY&下; 12){
            AM_PM =AM;        }其他{
            AM_PM =下午;        }        长START_TIME = DateTimeUtils.getTimeInMillis(HOUROFDAY,分钟,0);
        台历挂历= Calendar.getInstance();        长mseconds = DateTimeUtils.getFirstMillis(calendar.get(Calendar.DATE)
                calendar.get(的Calendar.MONTH),calendar.get(Calendar.YEAR));
        时间= START_TIME + mseconds;        button.settext(时间);
        mCalendar.set(Calendar.HOUR,HOUROFDAY);
        mCalendar.set(Calendar.MINUTE,分钟);    }
};

任何帮助将AP preciable ...

编辑:

错误日志:

  15 10-29:07:32.478:E / AndroidRuntime(6401):致命异常:主要
10-29 15:07:32.478:E / AndroidRuntime(6401):显示java.lang.NullPointerException
10-29 15:07:32.478:E / AndroidRuntime(6401):在com.example.medicationreminder.MedInfo $ MyOnTimeSetListenter.onTimeSet(MedInfo.java:237)
10-29 15:07:32.478:E / AndroidRuntime(6401):在android.app.TimePickerDialog.tryNotifyTimeSet(TimePickerDialog.java:130)
10-29 15:07:32.478:E / AndroidRuntime(6401):在android.app.TimePickerDialog.onClick(TimePickerDialog.java:115)


解决方案

尽量要更新特定按钮的文字

 按钮B =(按钮)list.getChildAt(btn_cnt);
b.settext(时间);

当你在存储按钮标识 btn_cnt ,所以可以得到视图getChildAt(位置)

其中的列表布局,你动态地添加按钮

 公共无效Add按钮(int值){
    list.removeAllViews();    对于(i = 0; I<值; I ++){
        按钮=新按钮(本);
        button.setText(添加时间);
        button.setId(ⅰ);        button.setOnClickListener(新OnClickListener(){            公共无效的onClick(视图v){
                日历mCalendar = Calendar.getInstance();
                新TimePickerDialog(MedInfo.this,onTimeListener,mCalendar
                        获得(Calendar.HOUR_OF_DAY),mCalendar.get(Calendar.MINUTE),FALSE)
                        。显示();
                btn_cnt = v.getId();
                Toast.makeText(getApplicationContext(),+ btn_cnt,Toast.LENGTH_SHORT).show();
            }
        });
        list.addView(按钮);
    }
}
TimePickerDialog.OnTimeSetListener onTimeListener =新OnTimeSetListener(){    公共无效onTimeSet(TimePicker观点,诠释HOUROFDAY,分整型){
        串AM_PM;
        日历mCalendar = Calendar.getInstance();
        如果(HOUROFDAY&下; 12){
            AM_PM =AM;        }其他{
            AM_PM =下午;        }        长START_TIME = DateTimeUtils.getTimeInMillis(HOUROFDAY,分钟,0);
        台历挂历= Calendar.getInstance();        长mseconds = DateTimeUtils.getFirstMillis(calendar.get(Calendar.DATE)
                calendar.get(的Calendar.MONTH),calendar.get(Calendar.YEAR));
        时间= START_TIME + mseconds;        按钮B =(按钮)list.getChildAt(btn_cnt);
        b.settext(时间);        mCalendar.set(Calendar.HOUR,HOUROFDAY);
        mCalendar.set(Calendar.MINUTE,分钟);    }
};

编辑: - 您可以使用列表而不是阵列从按钮检索所有的时间。

 列表<串GT; listOfDate =新的ArrayList<串GT;();
        的for(int i = 0; I< list.getChildCount();我++)
        {
            按钮B =(按钮)list.getChildAt(ⅰ);
            listOfDate.add(b.getText()的toString());        }

希望这会帮助你。

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)

解决方案

Try like to update the text of particular Button

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

As you are storing the Button Id in btn_cnt, so can get the view with getChildAt(position)

Where list is your Layout where you adding the Button dynamically.

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

    }
};

Edit:- You can use List instead of Array for retrieving all the time from 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());

        }

Hope this will help you.

这篇关于如何设置在特定的ID动态生成的按钮上的文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆