android怎么用for循环给多个button按钮赋相同的值

在xml有25个button,id分别为button1,...,25,现在我需要对这个25个button赋相同值,我想在java代码中用for循环实现,但是我发现需要用f... 在xml有25个button,id分别为button1,...,25,现在我需要对这个25个button赋相同值,我想在java代码中用for循环实现,但是我发现需要用findViewById(R.id.??),问号中的内容不会还需要我定义一个数组保存25个button的id吧?求大神支招有什么其他方法么?!! 展开
 我来答
删字格
推荐于2018-03-07 · TA获得超过526个赞
知道小有建树答主
回答量:636
采纳率:0%
帮助的人:280万
展开全部
Android_013_利用for循环创建100个Button控件并给其添加监听器

  有些时候, 在一个Activity中可能会需要大量的类型相同的控件, 比如果需要显示100 按钮, 难道我们真的就要布局文件中写100个按钮的代码吗?
其实可以在java 源文件中利用for 循环就可以一次创建100 个按钮了.

1. 先在布局文件中添加一个<ScrollView></ScrollView>标签, 让屏幕可以显示更多的内容.
在<ScrollView></ScrollView>中再添加一个<LinearLayout></LinearLayout>标签,
并这个标签设置一个ID.

布局文件main.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/linearLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>

</LinearLayout>

</ScrollView>
在java源文件中利用for循环来创建100个按钮, 代码如下:
package com.shy;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

publicclass ButtonsActivity extends Activity
{
private LinearLayout linearLayout;
@Override
publicvoid onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//利用LinearLayout控件的id获得此控件的对象
linearLayout = (LinearLayout)findViewById(R.id.linearLayout);

/*
* 利用一个for循环, 向LinearLayout中添加100个按钮
*/
for(int i=1; i<=100;i++)
{
//创建一个新的Button对象
Button btnLesson =new Button(this);
//设置对象的id
btnLesson.setId(i);
//设置对象显示的值
btnLesson.setText("Lesson"+i);
//给按钮添加监听事件
btnLesson.setOnClickListener(new btnListener(btnLesson));
//将Button对象添加到LinearLayout中
linearLayout.addView(btnLesson);
}
}

/*
* 创建一个按钮监听器类, 作用是点击按钮后改变按钮的名字
*/
class btnListener implements OnClickListener
{
//定义一个 Button 类型的变量
private Button btn;

/*
* 一个构造方法, 将Button对象做为参数
*/
private btnListener(Button btn)
{
this.btn = btn;//将引用变量传递给实体变量
}
publicvoid onClick(View v)
{
btn.setText("Welcome!");//改变按钮的名字
}
}
}
追问
好方法,很简洁,故采之
QQMSD8
推荐于2016-04-20 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
首先要得到第个Button,才能对其赋值。
示例代码:
1.获取所有Button 并放到一个list中
List<Button> list = new ArrayList<Button>();
list.add(button1);
list.add(button2);
list.add(button3);

2.循环获取每个Button
for(int i=0; i<list.size(); i++){
Button btn = list.get(i);

}

3.循环赋值
btn.setText("按键"):
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百宜羿沛若
2020-03-23 · TA获得超过3614个赞
知道大有可为答主
回答量:3015
采纳率:27%
帮助的人:183万
展开全部
如果你要用for循环的话就不能按照你的这个方法来做。需要在代码里面用循环new
button控件。
如下:
先建立一个button的控件数组:buttona
=
new
button[bubble_num];
for
(int
i
=
0;
i
<
bubble_num;
i++){
minfo
=
new
relativelayout(this);
button
bt
=
new
button
(this);
buttona
[i]
=
bt;
relativelayout.layoutparams
btparams
=
new
relativelayout.layoutparams
(80,30);
//button的宽高
btparams
.leftmargin=20+
19*i;
//定位
btparams
.topmargin=16
+
10*i;
//定位
minfo.addview(bt,
btparams
);
}
你用for循环按照上面来加button控件应该是行的通的。
设置监听:
for
(int
i
=
0;
i
评论
0
0
加载更多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈键欢
2015-03-24 · 超过25用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:47万
展开全部
在android里面,button id是有一个具体数字的,在R.java里面可以看到。你可以定义一个数组把这些ID存储起来,直接循环取出来赋给findViewById就可以了。
追问
虽然也很麻烦,但比我自己的方法要可行的多!但是楼下的方法更简洁,故采用楼下的,还是灰常感谢及时的帮助,其实我最后还是用的你的方法,因为不想大改了,不过下次就用楼下的方法。谢谢~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高峰在学习
推荐于2017-12-15 · 超过48用户采纳过TA的回答
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:22.2万
展开全部
Button btn[25];
for(int i = 0 ; i < 25; i++){

   btn[i] = new Button(this);
   btn[i].setId(i+100); //ID从100开始吧
   btn[i].setOnClickListener(myClickListener);
}
更多追问追答
追问
额,我好像没有看懂哎,我到底怎么赋值呢,btn[i].setOnClickListener(myClickListener);这一句之前我都看懂了,但是这一句跟赋值有啥联系呢,,,我是菜鸟
追答
按钮总要有个点击事件吧。否则你点按钮有啥用呢。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式