若有發現錯誤記得留言告知哦~~我會很感激的!!
佈局文件:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/LinearLayout01"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- <TextView
- android:id="@+id/title"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:text="練習動態產生元件"
- android:textAppearance="?android:attr/textAppearanceLarge" />
- <CheckBox
- android:id="@+id/c1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/title"
- android:text="個性" />
- <CheckBox
- android:id="@+id/c2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/c1"
- android:text="勢力名稱" />
- <CheckBox
- android:id="@+id/c3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_below="@+id/c2"
- android:text="顏色" />
- <Button
- android:id="@+id/b1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentRight="true"
- android:layout_below="@+id/c3"
- android:text="ok"
- android:onClick="start" />
- <!-- 寫android:onClick="start"就不用大費周章的再宣告此按鈕的監聽器 -->
- </LinearLayout>
主程式:
- //學習目的:動態產生物件、CheckBox用法、Array(容器)用法
- package my.practice;
- import android.os.Bundle;
- import android.app.Activity;
- import android.view.Menu;
- import android.view.View;
- import android.widget.Button;
- import android.widget.CheckBox;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- LinearLayout LL;
- CheckBox c1,c2,c3;
- Button b1;
- TextView tv[]=new TextView[12];
- //創造只能裝TextView的容器(容器名稱:tv),裏面留有12個擺放空間
- String sName[]={ //裝人名的容器sName,其sName[n]為裏面裝的實體物件
- "■曹操",
- "■劉備",
- "■孫權"};
- String sComment[]={ //裝個性的容器sComment
- "-治世之能臣,亂世之奸雄",
- "-仁义其表,峥嵘其心",
- "-生子当如孙仲谋"};
- String sAddress[]={ //裝地域的容器sAddress
- "-魏國",
- "-蜀國",
- "-吳國"};
- String sColor[]={ //裝顏色的容器sColor
- "-藍色",
- "-綠色",
- "-紅色"};
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- LL=(LinearLayout)findViewById(R.id.LinearLayout01);
- //想要动态产生物件就必須先創造一個Layout當作容器裝物件。
- c1=(CheckBox)findViewById(R.id.c1);
- c2=(CheckBox)findViewById(R.id.c2);
- c3=(CheckBox)findViewById(R.id.c3);
- for(int i=0;i<12;i++){
- tv[i]=new TextView(this);//實體化TextView物件
- LL.addView(tv[i]);//把物件裝進容器裏,再由容器顯現到Activity
- }
- }
- public void start(View view){ //搭配佈局文件,按鈕按下時動態產生TextView
- int index=0;//控制TextView容器空間的編號
- for(int j=0;j<3;j++){
- //tv容器裏的index個位子,
- //放進sName或sComment或sAddress或sColor的j個string
- tv[index].setText(sName[j]);//確保每一組第一個出現的是人名
- index++;//接著下一個tv容器空間的號碼
- if(c1.isChecked()){ //假如點選個性
- tv[index].setText(sComment[j]);
- //tv[index]=選擇tv容器裏的第index個物件,
- //.setText(sComment[j])=設定它的文字為sComment容器裏第j個物件
- index++;接著下一個tv容器空間的號碼
- }
- if(c2.isChecked()){
- tv[index].setText(sAddress[j]);
- index++;
- }
- if(c3.isChecked()){
- tv[index].setText(sColor[j]);
- index++;
- }
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
- }
程式界面: