Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 对动态创建的按钮的引用_Android_Android Button - Fatal编程技术网

Android 对动态创建的按钮的引用

Android 对动态创建的按钮的引用,android,android-button,Android,Android Button,我一直在寻找如何动态创建按钮。终于,我明白了。 但是,我还不知道如何引用特定创建的按钮。 例如,在我下面的示例中,当单击某个按钮时,如何将其文本设置为红色 即如何放置其id: Button button_pulsado = (Button) findViewById(R.id.???????); Button.setTextColor(Color.RED); 这是我的例子: public class MainActivity extends AppCompatActivity { @

我一直在寻找如何动态创建按钮。终于,我明白了。
但是,我还不知道如何引用特定创建的按钮。
例如,在我下面的示例中,当单击某个按钮时,如何将其文本设置为红色

即如何放置其id:

Button button_pulsado = (Button) findViewById(R.id.???????);
Button.setTextColor(Color.RED);
这是我的例子:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      List<String> myList = new ArrayList<String>();
      myList.add("A");
      myList.add("B");
      myList.add("C");
      myList.add("D");

      for (int i = 0; i < myList.size(); i++) {
        Button myButton = new Button(this);
        myButton.setText(myList.get(i));

        LinearLayout ll = (LinearLayout) findViewById(R.id.layout1);
        LinearLayout.LayoutParams lp = new       LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        ll.addView(myButton, lp);
      }
    }
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List myList=new ArrayList();
myList.添加(“A”);
myList.添加(“B”);
myList.添加(“C”);
myList.添加(“D”);
对于(int i=0;i
要避开
findViewById
问题,您可以存储
列表

使用
按钮。获取(int位置)
而不是
findViewById


关于

例如,在我下面的示例中,当单击某个按钮时,如何将其文本设置为红色

将每个按钮添加到视图中时,可以在单独的单击侦听器中为其设置颜色

class ColorClickListener implements View.onClickListener {
    private String color;
    ColorClickListener(String color) {
        this.color = color;
    }
    @Override 
    public void onClick(View v) {
        // v.setBackground(color); // For example... API may not like this
    }
}
从活动中

String [] colors = new String[] {"#fff", "#ccc"}; 

for (int i = 0; i < colors.length; i++) {
    Button b = new Button(this);
    b.setOnClickListener(new ColorClickListener(Color.parseColor(colors[i])));
}
String[]colors=新字符串[]{“#fff”,“#ccc”};
for(int i=0;i
无需调用
findViewById()
onClickMethod()
有一个
View
参数,该参数引用了单击的视图:

private changeColorClick = new OnClickListener() {
    @Override
    public void onClick(View v) {
        buttons.add(myButton);
        v.setTextColor(Color.RED);
    }

}
现在在您的循环中:

for (int i = 0; i < myList.size(); i++) {
    Button myButton = new Button(this);
    myButton.setTextColor(myList.get(i));
    myButton.setOnClickListener(changeColorClick);
}
现在,您需要一个数组、
List
Map
Color
对象,以便在构建
OnClickListener
时使用。比如说,

Color[] colors = new Color[]{Color.RED, Color.GREEN, Color.BLUE};
for (int i = 0; i < myList.size(); i++) {
    Button myButton = new Button(this);
    myButton.setTextColor(myList.get(i));
    myButton.setOnClickListener(new ColorClick(colors[i]);
}
Color[]colors=新颜色[]{Color.RED,Color.GREEN,Color.BLUE};
对于(int i=0;i

或者你可以在按钮上使用
setTag()

改变文本颜色的方法在哪里?什么类和方法?你想改变哪个视图?点击的按钮?还是另一个视图?我想改变点击的按钮我不知道“buttons.get(int position)”的完整行是如何完成的是的,你能帮我吗?我不知道你想如何使用按钮。它只是一个ArrayList。它有一个get方法。你用你想要的按钮的位置来调用它。真的很简单吗?:button button1=(button)buttons.get(1)(R.id.buttons[1]);@FAR No.
R.id.buttons
不是数组。另外,一行中的两组括号是无效语法,并且是编译器错误。@cricket\u 007 My bad=pThanks非常感谢。您的建议帮助我解决了问题。但是,现在出现了另一个问题:我不知道如何将按钮的文本恢复为原始颜色(黑色)当单击另一个按钮时。如果有人帮助我,我将不胜感激。@FAR作为将来的参考,您应该发布一个新问题。另外,请确保在延迟计时器启动后接受答案。
for (int i = 0; i < myList.size(); i++) {
    Button myButton = new Button(this);
    myButton.setTextColor(myList.get(i));
    myButton.setOnClickListener(changeColorClick);
}
public ColorClick implements OnClickListener() {
    private Color color;
    public ColorClick(Color color) {
        this.color = color;
    }
}
Color[] colors = new Color[]{Color.RED, Color.GREEN, Color.BLUE};
for (int i = 0; i < myList.size(); i++) {
    Button myButton = new Button(this);
    myButton.setTextColor(myList.get(i));
    myButton.setOnClickListener(new ColorClick(colors[i]);
}