Android (5) ArrayAdapter 下拉式選單
用 ArrayAdapter 來建立一個可以下拉的選單。
1. 添加資源:
在 res/values/string.xml 中添加需要用到的字串及陣列:
<string name="spinner_prompt">"Select one"</string> <string-array name="nameList"> <item>alice</item> <item>bob</item> <item>cat</item> <item>eve</item> </string-array>
2. 處理 Layout:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"> <Spinner android:id="@+id/sp_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:prompt="@string/spinner_prompt"> </Spinner> </LinearLayout>
我們使用了預先定義好的資源 spinner_prompt。
3. 透過 ArrayAdapter 幫 Spinner 設定內容:
下面是一個簡單的 Spinner 範例:
public class MainActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner sp_name = (Spinner)findViewById(R.id.sp_name); ArrayAdapternameListAdapter = ArrayAdapter.createFromResource( MainActivity.this, R.array.nameList, android.R.layout.simple_spinner_dropdown_item); sp_name.setAdapter(nameListAdapter); } }
我們使用 ArrayAdapter.createFromResource() 利用 Resource 產生一個 ArrayAdapter。
ArrayAdapter.createFromResource() 需要三個參數:
public static ArrayAdaptercreateFromResource ( Context context, int textArrayResId, int textViewResId)
- Context context: App 的環境。
- int textArrayResId: Array 的 Id。
- int textViewResId: View 的 Id。
4. 設定 Spinner 的 Listener:
上面的範例只有示範如何產生選單,選完的選項沒有連動到任何方法,下面的範例示範如何將選取連動。
在 MainActivity 中簡單定義一個 Listener,實做 onItemSelected(),選完會 Toast 一個簡單的訊息。
private class MySpinnerListener implements AdapterView.OnItemSelectedListener{ @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { String[] nameList = getResources().getStringArray(R.array.nameList); Toast.makeText(MainActivity.this, nameList[position], Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView parent) { } }
下面是完整的程式碼,我們把我們定義的 Listener 設給 Spinner:
package com.example.ben.androidtest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Spinner sp_name = (Spinner)findViewById(R.id.sp_name); ArrayAdapternameListAdapter = ArrayAdapter.createFromResource( MainActivity.this, R.array.nameList, android.R.layout.simple_spinner_dropdown_item); sp_name.setAdapter(nameListAdapter); sp_name.setOnItemSelectedListener(new MySpinnerListener()); } private class MySpinnerListener implements AdapterView.OnItemSelectedListener{ @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { String[] nameList = getResources().getStringArray(R.array.nameList); Toast.makeText(MainActivity.this, nameList[position], Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView parent) { } } }
留言
張貼留言