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"
/>

讓按鈕產生功能

  1. 從spinner挑選寵物
  2. layout指定被點擊後執行哪個activity方法
  3. activity那個方法擷取spinner裡面的值傳遞給自訂類別的 getPets()方法
  4. getPets()方法找到相符合的寵物,透過字串ArrayList將他回傳給activity
  5. activity取得TextView參數並且設定成相符的寵物

建立onClick在activity_main.xml

<Button
 android:onClick="onclickFindPets"
/>

直接在這個屬性上面點擊建立熱鍵
快速在activity建立起方法

建立onclickFindPets方法

  public void onclickFindPets(View view) 
{
}

假如想要某個方法回應點擊

  1. 必須是公用的public
  2. 並且是不回傳值void
  3. 且接收單一的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();

程式碼在做什麼?

  1. 從spinner挑選pets,點擊按鈕
  2. 呼叫了onclickFindpets方法,取得參考(R.Id._)
  3. 擷取Spinner被選中的值,把它轉成Sting
  4. 接著把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);
}

results matching ""

    No results matching ""