gpt4 book ai didi

android - 在 Android 中使用多个动态创建的按钮

转载 作者:行者123 更新时间:2023-11-30 01:56:26 26 4
gpt4 key购买 nike

我的程序要求用户输入他们的姓名并单击名为 btn 的按钮。单击 btn 后,它们的名称将与另一个动态创建的 Button 一起动态添加到 TableRow。我遇到问题的是这些按钮。我需要稍后在程序中以某种方式访问​​它们。我在我的 res/value 文件夹中创建了许多 ID 以跟踪每个 ID(changebtn1、changebtn2 等)。它们都存储在一个名为 buttonIDs 的数组中。

假设用户输入了名字,使用动态创建的按钮创建了一个新行:

 btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tableRow = new TableRow(getApplicationContext());
Button changeButton = new Button(getApplicationContext());

changeButton.setText("Change");
changeButton.setId(buttonIDs[i]);//From res/values

tableRow.addView(changeButton);
tableLayout.addView(tableRow);
i++;
});

现在假设他们输入了第二个名字,创建了另一个 Button 等等。我现在如何将 OnClickListener 设置到我创建的第一个 ID 为 R.id.changeBtn1 的按钮?换句话说,我拥有所有这些动态创建的按钮,但不确定如何将 OnClickLsteners() 添加到较早的按钮或以任何方式访问它们。谢谢

最佳答案

或者您直接在创建按钮时附加 OnClickListener,或者您可以像这样存储对按钮的引用:

ArrayList<Button> buttons = new ArrayList<Button>();
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tableRow = new TableRow(getContext());
Button changeButton = new Button(getContext());
buttons.add(changeButton);

changeButton.setText("Change");
changeButton.setId(buttonIDs[i]);//From res/values

tableRow.addView(changeButton);
tableLayout.addView(tableRow);
i++;
});

for(Button button: buttons){
button.setOnClickListener(new OnClickListener()
...etc...
);
}

您不会浪费大量内存,因为 buttons.add() 行不会复制数组中的按钮,而只会复制对按钮的引用。如果您需要对按钮进行 ID 访问,请使用 HashMap,如下所示:

HashMap<String, Button> map = new HashMap<String, Button>();
map.put("id", new Button(getContext()));

然后像这样访问它:

Button button = map.get("id");

关于android - 在 Android 中使用多个动态创建的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32143177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com