我已经为动态布局编写了此代码,在其中使用此循环来生成一对按钮(这是我生成它们的代码的一部分)
for(int i = 1; i <= 2 ; i++) { button button1 = new button(this); button1.setTag("age"); button1.setID(i); layout.addVIEw(button1); button button2 = new button(this); button2.setID(i); button2.setTag("country"); button2.setEnabled(false); layout.addVIEw(button2); button1.setonClickListener(this); button2.setonClickListener(this); }
我想做的是,如果单击了button1,则应该启用button2(最初是禁用的).
如果按钮是在xml中创建的,那么这将是一件非常容易的任务,因为每个按钮都有各自的R.ID.xxxxx名称,但是在这里,我无法理解如何在OnClick(VIEw v )方法,以便我可以更改是否启用它,我尝试为每个按钮添加标签,以便我可以使用另一个参数来识别按钮,但是我不知道如何使用的视图信息来识别另一个按钮单击的按钮1.
解决方法:
我假设您在点击处理中使用了按钮标签.为了保留标签数据并在按钮之间添加所需的接线,您可以创建一个可用作标签的数据结构:
static class buttonTag { String buttonType; button partner; buttonTag(String type, button button) { buttonType = type; partner = button; }}
然后,您可以重新组织您的设置代码:
for(int i = 1; i <= 2 ; i++) { button button1 = new button(this); button1.setID(i); layout.addVIEw(button1); button button2 = new button(this); button2.setID(i); button2.setEnabled(false); button1.setTag(new buttonTag("age", button2)); button2.setTag(new buttonTag("country", button1)); layout.addVIEw(button2);}
单击处理显然将需要更改,以将getTag()强制转换为buttonTag而不是String.
如果不需要“年龄”和“国家”信息来区分按钮类型,只需将每个按钮设置为另一个的标签即可.
编辑:
对于后一种方案,这是在点击侦听器中使用它的方式:
public voID onClick(VIEw v) { Object tag = v.getTag(); if (tag instanceof button) { button btn = (button) tag; btn.setEnabled(true); v.setEnabled(false); }}
如果出于其他原因,您需要标记的“年龄”和“国家/地区”部分,则代码将略有不同:
public voID onClick(VIEw v) { Object tag = v.getTag(); if (tag instanceof buttonTag) { buttonTag bTag = (buttonTag) tag; bTag.partner.setEnabled(true); v.setEnabled(false); }}
总结 以上是内存溢出为你收集整理的android-从动态视图识别按钮全部内容,希望文章能够帮你解决android-从动态视图识别按钮所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)