請在Android Studio 3.x版,新建一個專案。增加一個Empty Activity。再拉一個Spinner元件,順序來排列出來。如下圖所示:
拉好畫面,開始寫程式。請參考之我之前的文章,利用Volley物件,用GET的模式,取得JSON字串。再用JSONArray物件來解出欄位的資料,再組成字串陣列。將陣列跟Spinner物件連結在一起。請參考程式的註解。
public class MainActivity extends AppCompatActivity {
//宣告物件名稱。
private RequestQueue objqueue;
private final static String strurl = "http://192.168.1.102:8088/newmap_admin/_api_gettags.php";
private Spinner lst_tag;
ArrayList<String> arytags;
private StringRequest getRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
//物件名稱跟Layout上的物件,產生連結。
lst_tag = (Spinner)findViewById(R.id.lsttag);
arytags=new ArrayList<>();
//設定Volley物件。
objqueue = Volley.newRequestQueue(this);
//實做Volley物件,在StringRequest的函式,預設值就是Request.Method.GET,可以省略。
//而strurl,就是要GET的API網址。
//最後,還要Override二個監聽的事件。
getRequest = new StringRequest(strurl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//response,表示是回傳值,就是API要回傳的字串,也可以是JSON字串。
//宣告JSONArray時,要用try...catch包起來,不然會出現錯誤。
try{
//將JSON字串,放到JSONArray中。
JSONArray array = new JSONArray(response);
//解出JSON的資料,將所要的資料,再寫入陣列中。
for (int i = 0; i < array.length(); i++) {
JSONObject jsonObject = array.getJSONObject(i);
String strtagname = jsonObject.getString("ctagname");
arytags.add(strtagname);
}
}
catch(JSONException e) {
e.printStackTrace();
}
//將陣列跟Spinner物件連結在一起。
lst_tag.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, arytags));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//如果發生錯誤,就是回傳VolleyError,可以顯示是什麼錯誤。
}
});
//將getRequest物件加入Volley物件的queue中,執行跟API的溝通。
objqueue.add(getRequest);
}
}
程式可以在模擬器上執行,執行出來的結果,如下圖所示:下拉選單,就會列出電影的列表,如PHP網頁輸出的資料。