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吧?求大神支招有什么其他方法么?!!
展开
5个回答
展开全部
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!");//改变按钮的名字
}
}
}
有些时候, 在一个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!");//改变按钮的名字
}
}
}
追问
好方法,很简洁,故采之
推荐于2016-04-20 · 知道合伙人软件行家
关注
展开全部
首先要得到第个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("按键"):
示例代码:
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("按键"):
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果你要用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
加载更多
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
加载更多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在android里面,button id是有一个具体数字的,在R.java里面可以看到。你可以定义一个数组把这些ID存储起来,直接循环取出来赋给findViewById就可以了。
追问
虽然也很麻烦,但比我自己的方法要可行的多!但是楼下的方法更简洁,故采用楼下的,还是灰常感谢及时的帮助,其实我最后还是用的你的方法,因为不想大改了,不过下次就用楼下的方法。谢谢~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);这一句之前我都看懂了,但是这一句跟赋值有啥联系呢,,,我是菜鸟
追答
按钮总要有个点击事件吧。否则你点按钮有啥用呢。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询