[Android] 013_利用for循环创建100个Button控件并添加监听器
Android_013_利用for循环创建100个Button控件并给其添加监听器
有些时候, 在一个Activity中可能会需要大量的类型相同的控件, 比如果需要显示100 按钮, 难道我们真的就要布局文件中写100个按钮的代码吗? 其实可以在java 源文件中利用for 循环就可以一次创建100 个按钮了.
1. 先在布局文件中添加一个<ScrollView></ScrollView>标签, 让屏幕可以显示更多的内容. 在<ScrollView></ScrollView>中再添加一个<LinearLayout></LinearLayout>标签, 并这个标签设置一个ID.
布局文件main.xml的代码如下:
View Code
<?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个按钮, 代码如下:
View Code
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!");//改变按钮的名字
}
}
}
运行后的结果如下图所示, 点击按钮后按钮的名字会改变