2-4 Android Spinner(第三個專案)
將
android:text="@string/hello_world"
改成
android:text="@string/hello_world"
利用string resource的方法
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
然後加上
android:id="@+id/textView"
並建立以下Button
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New button"
android:id="@+id/button"
android:layout_below="@+id/textView"
android:layout_alignLeft="@+id/textView"
/>
並加入
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:id="@+id/color"
/>
更改button與TextView成以下的狀態
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:id="@+id/color"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="button"
android:id="@+id/find_pet"
android:layout_below="@+id/color"
android:layout_centerHorizontal="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:id="@+id/pets"
android:layout_below="@+id/find_pet"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true"/>
透過string.xml不寫死字串
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:id="@+id/color"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/fine_pet"
android:id="@+id/find_pet"
android:layout_below="@+id/color"
android:layout_centerHorizontal="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pets"
android:id="@+id/pets"
android:layout_below="@+id/find_pet"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true"/>
string.xml
<resources>
<string name="app_name">Pets Adviser</string>
<string name="fine_pet">Find pets</string>
<string name="pets">pets</string>
</resources>
為spinner增加列表
string.xml搭配Spinner
<string-array name="pets_menu"> petsMenu
<item>Dog</item>
<item>Cat</item>
<item>Monkey</item>
</string-array>
activity_main.xml
<Spinner
android:entries="@array/pets_menu"
/>
讓按鈕產生功能
- 從spinner挑選寵物
- layout指定被點擊後執行哪個activity方法
- activity那個方法擷取spinner裡面的值傳遞給自訂類別的 getPets()方法
- getPets()方法找到相符合的寵物,透過字串ArrayList將他回傳給activity
- activity取得TextView參數並且設定成相符的寵物
建立onClick在activity_main.xml
<Button
android:onClick="onclickFindPets"
/>
直接在這個屬性上面點擊建立熱鍵
快速在activity建立起方法
建立onclickFindPets方法
public void onclickFindPets(View view)
{
}
假如想要某個方法回應點擊
- 必須是公用的public
- 並且是不回傳值void
- 且接收單一的View參數(View view)
利用findViewById()取得參考
TextView pets = (TextView) findViewById(R.id.pets)
R.java
R.java 是特殊的java檔案
在project模式下的
/app/build/generated/source/r/debug目錄內
Androdi使用R來記錄所使用的資源
讓你能從activity程式碼取得GUI元件的參考
當app被刷新,R.java也會被更新
可以找到記憶體位置
public static final int pets_menu=0x7f0a0000;
因此可以利用R這個資源快速存取視圖元件
TextView pets = (TextView) findViewById(R.id.pets);
pets.setText("This is Pets");
擷取Spinner裡面的值
Spinner color = (Spinner) findViewById(R.id.color);
String.valueOf(color.getSelectedItem());
color.getSelectedItem();
程式碼在做什麼?
- 從spinner挑選pets,點擊按鈕
- 呼叫了onclickFindpets方法,取得參考(R.Id._)
- 擷取Spinner被選中的值,把它轉成Sting
- 接著把String show在textView
完整的onclickFindPets方法
public void onclickFindPets(View view)
{
TextView pets = (TextView) findViewById(R.id.pets);
Spinner color = (Spinner) findViewById(R.id.color);
String seletedpets = String.valueOf(color.getSelectedItem());
pets.setText(seletedpets);
}