关于http://stackoverflow.com/questions/2381560/how-to-group-a-3x3-grid-of-radio-buttons

2024-04-06

我尝试使用标题中显示的网站上作为第一个答案提供的代码。尽管我尝试修改它,但我无法使其工作。问题是,当我检查第一个单选按钮以外的单选按钮时,它们都会保持选中状态。

问题是:什么时候调用 addView 方法?

另外,这是我的代码版本,我希望有人能告诉我我的错误:

public class ToggleButtonGroupTableLayout extends TableLayout  implements     OnClickListener {

private static final String TAG = "ToggleButtonGroupTableLayout";
private ToggleButtonGroupTableLayout radGroup;
private RadioButton activeRadioButton;

/** 
 * @param context
 */
public ToggleButtonGroupTableLayout(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

/**
 * @param context
 * @param attrs
 */
public ToggleButtonGroupTableLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

@Override
public void onClick(View v) {
    final RadioButton rb = (RadioButton) v;
    radGroup = (ToggleButtonGroupTableLayout) findViewById(R.id.radGroup1);
    int activeRadioButtonId = radGroup.getCheckedRadioButtonId(v);
    Log.i(TAG,"FIRST " + activeRadioButtonId);
//       if (activeRadioButtonId != -1 && activeRadioButton != null ) {
//           activeRadioButton.setChecked(false);
//       }
    rb.setChecked(true);
    //activeRadioButton = rb;
    if (activeRadioButtonId != -1 && activeRadioButton != null ) {
        activeRadioButton = (RadioButton) findViewById(activeRadioButtonId);
        activeRadioButton.setChecked(false);
    }
    else
        Log.i(TAG,"" + activeRadioButton + "  " + activeRadioButtonId);
}

/* (non-Javadoc)
 * @see android.widget.TableLayout#addView(android.view.View, int,   android.view.ViewGroup.LayoutParams)
 */
@Override
public void addView(View child, int index,
        android.view.ViewGroup.LayoutParams params) {
    super.addView(child, index, params);
    setChildrenOnClickListener((TableLayout)child);
}


/* (non-Javadoc)
 * @see android.widget.TableLayout#addView(android.view.View, android.view.ViewGroup.LayoutParams)
 */
@Override
public void addView(View child, android.view.ViewGroup.LayoutParams params) {
    super.addView(child, params);
    setChildrenOnClickListener((TableLayout)child);
}


private void setChildrenOnClickListener(TableLayout tl) {
    final int c = tl.getChildCount();
    for (int i=0; i < c; i++) {
        final View v = tl.getChildAt(i);
        if ( v instanceof TableRow ) {
            final int c1 = ((TableRow) v).getChildCount();
            for (int j = 0; j < c1; j++) {
               View v1 = ((TableRow) v).getChildAt(j);
               if (v1 instanceof RadioButton)
                   v1.setOnClickListener(this);
            }
        }
    }
}

public int getCheckedRadioButtonId(View v) {
    if ( activeRadioButton != null ) {
        return activeRadioButton.getId();
    }

    return -1;
}

只需修改setChildrenOnClickListener:

 private void setChildrenOnClickListener(TableRow tr) {
    final int c = tr.getChildCount();
    for (int i=0; i < c; i++) {
        final View v = tr.getChildAt(i);
        if (v instanceof RadioButton) {
            v.setOnClickListener(this);
            if (((RadioButton) v).isChecked())
                activeRadioButton = (RadioButton) v;
        }
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于http://stackoverflow.com/questions/2381560/how-to-group-a-3x3-grid-of-radio-buttons 的相关文章

随机推荐

  • 理解含义的算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想知道是否有任何特定的算法可以遵循
  • Vue:选择下拉菜单在更改值时清除其他输入

    我有一个带有输入值的表单 当我选择带有 v model 的选项并更改下拉值时 之前字段的输入将被清除 我制作了一个简单的代码笔来演示这一点 一段时间以来 这一直是我的痛点 但现在它开始干扰客户体验 所以我想看看为什么会发生这种情况 http
  • 带通配符的 FTP 目录部分列表

    首先我问 ftp 目录列表超时 大量子目录 https stackoverflow com questions 9230485 ftp directory listing timeout huge number of subdirs 我得到
  • 在 JFrame 中组织多个 JPanel 的好方法是什么?

    我想做的是在框架内组织五个独立的 JPanel 输出应如下所示 顶部将有一个面板 顶部面板正下方的两个面板垂直分割空间 然后另外两个面板水平分割剩余空间 我无法弄清楚如何组织如上所述的面板 我认为这是因为我不知道正确的语法 因此 非常感谢任
  • 引用在嵌套结构中的生存时间不够长

    我正在创建一系列数据结构 其中包含对较低级别结构的可变引用 我一直很愉快地与A B and C下面但我尝试添加一个新层D A B C D实际上是用于协议解码的状态机的状态 但我在这里删除了所有这些 struct A fn init A gt
  • Go 模块在 VSCode 中导入问题(“无法在任何 [...] 中找到包 [...]”)

    我遇到了可能是 Gopls 语言服务器问题 在 VSCode 中使用带有 Go 扩展的 Go 模块时 我的所有外部包导入语句都被标记为不正确 这正是我到目前为止所做的 在我的 GOPATH src github com Kozie1337
  • sbt:选择运行的主类

    我的应用程序中有大约 6 个主要类 但我通常只使用其中一个 所以我想通过 sbt 自动运行它 sbt 使得可以在 build sbt 中定义两个键 Run Key val selectMainClass TaskKey Option Str
  • 无法检索访问令牌 linkedin api

    我正在申请connect with linkedin 我正在关注分步指南 https code google com p simple linkedinphp wiki QuickStart 为了验证用户身份 我寻求了帮助this http
  • 如何绘制具有不同 colspan 的四个子图?

    我尝试使用四张图像来拟合matplotlib pyplot像下面这样 plot1 plot2 plot3 plot4 我发现的大多数例子都涵盖了如下三个图 ax1 plt subplot 221 ax2 plt subplot 222 ax
  • 当我将 targetSDK 设置为 API 30 后,我的 Android 应用程序无法正常工作;我如何找出原因?

    根据Google https developer android com distribute best practices develop target sdk 从 2021 年 8 月开始 所有新的 Google Play 应用程序除了
  • Gatsby 未生成正确的静态 HTML 文件

    我正在开发一个基于盖茨比的网站 到目前为止该网站的开发进展顺利 但在构建生产时遇到了一个问题 即我们在各个页面索引文件中没有获得任何静态 html 相反 Gatsby 似乎将尝试从 javascript 注入页面 这与我们的预期相反 我看到
  • Pandas.read_excel 读取 xlsx 文件集时出现 KeyError

    我使用 Anaconda shell 进行数据分析 上传到pandas一堆excel文件 25个文件 在此文件上https www dropbox com s 16ea1cw6k63i16p Newdata zip dl 0 https w
  • 添加两个具有不同回调的谷歌地图[重复]

    这个问题在这里已经有答案了 我的页面上有两个谷歌地图容器 第一个 id map 只是一个普通的 显示地图 第二个 id map2 是一个搜索地图 用户在其中键入输入 地图将刷新到用户键入的位置 这些地图使用相同的 api 密钥 但它们的回调
  • Request.pipe() JPEG 流

    我正在开发一个作为 ZoneMinder 中间件的 Nodejs 应用程序 简而言之 我的目标是屏蔽所有 ZoneMinder api 以便客户端不知道我是否使用 ZM 一切都很好 但有一件事让我烦恼 ZM 中有一个流 api 它提供流 J
  • PyGame:文本未出现

    我正在遵循教程 我试图让我的文本出现在屏幕上 这是我的代码 但文本不会出现 from future import division import math import sys import pygame class MyGame obje
  • 如何使用 PHP 安全地将 JSON 数据写入文件

    我有用于编辑图像的 HTML 表单 所有数据都存储在 JSON 中 当我更改当前图像时 我想通过 PHP 脚本将更改保存到文本文件中 如果我返回到上一个图像 该配置将再次从该文件发送到表单 我的问题是 如何安全地写入 读取此类数据 在哪里以
  • 在 WooCommerce 主页上隐藏“缺货”产品

    我不想在主页上显示 缺货 产品 我尝试了一些 WooCommerce 挂钩和过滤器来更改产品查询 但它不起作用 我还在 woocommerce 设置区域中检查了 隐藏缺货 但产品仍然出现 我能得到线索吗 发生了什么 我尝试使用此过滤器挂钩来
  • C#:正确使用 Wea​​kReference IsAlive 属性

    正如所解释的here https msdn microsoft com en us library system weakreference isalive v vs 110 aspx if WeakReference s IsAlive返
  • Python:在重新分配外部函数后,闭包如何继续存在?

    我学习了 Python 中的闭包 并且对这个概念有了足够的了解 在 IDLE 中闲逛时 我想到了如果我重新分配封闭函数然后尝试调用封闭函数会发生什么 gt gt gt def outer function hello message hel
  • 关于http://stackoverflow.com/questions/2381560/how-to-group-a-3x3-grid-of-radio-buttons

    我尝试使用标题中显示的网站上作为第一个答案提供的代码 尽管我尝试修改它 但我无法使其工作 问题是 当我检查第一个单选按钮以外的单选按钮时 它们都会保持选中状态 问题是 什么时候调用 addView 方法 另外 这是我的代码版本 我希望有人能