[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!");//改变按钮的名字
}
}
}

 

运行后的结果如下图所示, 点击按钮后按钮的名字会改变

clip_image001

posted @ 2011-07-18 12:58  ShanHaiyang  阅读(5682)  评论(0编辑  收藏  举报