当前位置: 首页 > 知识库问答 >
问题:

如何管理自动创建的多个按钮上的OnClickListener

陈嘉荣
2023-03-14

我用编程方式创建了很多按钮,每个按钮对应于某个操作,并且我需要能够根据单击的按钮识别和检索用户输入。界面如下:

我有70件这样的东西。

我读过

动态创建按钮并设置onClickListener

而且

在Android中实现动态创建按钮的OnClickListener

但我不知道怎样才是正确的方法。例如,如果用户单击button文本现在已设置...,我必须能够检索edittext的值,并且知道该分钟数与Andar carto compra相对应。

按钮分配标记以标识屏幕上的索引,然后在视图层次结构中向上检索edittext值是否正确?

这是我到目前为止的代码:

for (int i = 1; i < types.length; i++) {

        //  ... more views created
        // ...... 

        Button enterBt2 = new Button(this);
        // Set layout params and stuff for the button
        enterBt2.setTag(i);
        enterBt2.setOnClickListener(getOnClickDoSomething(enterBt2));
        // ....
}

OnClickListener:

View.OnClickListener getOnClickDoSomething(final Button button)  {
    return new View.OnClickListener() {
        public void onClick(View v) {
            Log.e(TAG, "O " + ExerciseRecord.TYPE.values()[((int) button.getTag())]);
            // Obtain the value of the EditText with
            LinearLayout ll = (LinearLayout) button.getParent();
            ll.getChildAt(0); //The EditText
        }
    };
}

这是最好的方法吗?

共有2个答案

郎健柏
2023-03-14

这是一种可能的方法。视图上的标记本身就是一个对象,因此,理论上,您可以将编辑文本作为标记,以便更容易地检索它,但您可能会遇到一些内存泄漏问题--这是我自己做的。

另一种方法是创建Button的子类并添加所需的任何信息,我认为这是一种矫枉过正的方法。

文喜
2023-03-14

为按钮分配一个标记,以标识屏幕上的索引,然后在视图层次结构中向上移动并检索EditText值,这样是否正确?

这是一种选择。或者您可以有一个实现接口的类,添加一个构造函数,它以字符串作为参数。例如。

public class MyOnClickListener implements View.OnClickListener {
    final String mValue;
    public MyOnClickListener(String value) {
           mValue = value;
    }

     public void onClick(View v) {
        Log.e(TAG, "O " + mValue);
        // Obtain the value of the EditText with button.getParent()....
     }
}
 类似资料:
  • 我有一个按钮和一个文本框。当我在textbox中放置一个值并单击此按钮时,将创建一个新按钮,该值填充在textbox中,但我希望当我再次单击Button1时,应该还有一个按钮,或者我们可以说如何移动上一个按钮的位置? 请帮我解决这个问题。提前谢了。

  • 我有0编码知识,但希望你们可以协助修改我在网上找到的代码,以创建多个按钮来执行不同的bat文件。我会将其保存为hta文件,以便在win shell环境中运行。谢谢!!!

  • 我试图实现一个评论部分,按下按钮后,我想用ajax更新评论部分,这样页面就不必刷新了... 在这个评论部分,我有一个textarea 1按钮,每个评论都有几个隐藏字段,用户可以回答特定的评论。。。 因此,如果有50条评论,也有50个答案字段,每个字段1条。。。 除了一件事之外,每件事都有效… -要么我将按钮和字段的所有id命名为相同的名称(即id=“sendAnswer”和id=“answer”,

  • 我正在开发一个应用程序,其中我必须根据从客户端传递的客户id连接到不同的数据库。所有数据库的模式都是相同的。它是一种多租户应用程序。由于我不知道会有多少客户,我无法使用xml配置静态创建数据源,因此我必须手动创建数据源。 我们使用Spring JdbcTemplate连接到数据库,连接参数来自另一个保存应用程序配置的数据库。我能够正确连接到数据库,但方法调用不会在事务中发生。下面的代码片段只对一个

  • 问题内容: 我创建了一个框架,然后创建了一个画布。 接下来,我要在画布上添加一个按钮。 但是,当我打包按钮时,我看不到画布! 这是我尝试过的: 问题答案: Tkinter管理器会尝试将父窗口小部件的大小调整为正确的大小,以包含其子窗口小部件,并且默认情况下不会更大。画布就在其中- 但它与按钮的尺寸完全相同,因此是不可见的。 如果要在画布上放置小部件 而不 导致画布动态调整大小,则需要以下功能: 这

  • 问题内容: 我想使用CSS在html中创建一个切换按钮。我想要它,以便当您单击它时,它保持推入状态,而不是再次单击时它弹出。 如果没有办法仅使用CSS。有没有办法使用jQuery? 问题答案: 良好的语义方式是使用复选框,然后如果未选中,则以不同的方式设置其样式。但是没有好的方法可以做到这一点。您必须添加额外的跨度,额外的div,并且要真正看起来不错,请添加一些javascript。 因此最好的解