2012-08-13

Android Adapter家族系列(二) - ArrayAdapter

這次開始介紹Adapter的各子類別,因為怕太過深入會不容易了解,所以介紹各子類時

都只介紹一些比較基本的應用,如果有想更深入了解的人可以參考官網上面的介紹

ArrayAdapter上面有很完整的說明,謝謝。


我拿ArrayAdapter來橋接Spinner(下拉選單)做為介紹

直接帶入陣列當資料

//定義adapter為ArrayAdapter
ArrayAdapter<String> adapter ;

//建立陣列
private String[] type = new String[] {"茶類", "果汁類"};

//物件化
android.widget.ArrayAdapter.ArrayAdapter<string>(Context context, int textViewResourceId, String[] objects)
//上面是原式,textViewResourceId是下拉選單的樣式

adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, type); 

//設定下拉選單點選後出現選單的樣式,使用的是內建預設樣式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

//下拉選單
private Spinner sp;

sp = (Spinner) findViewById(R.id.type); 

sp.setAdapter(adapter);


重點:
可能你會發現ArrayAdapter在物件化時,有一個樣式textViewResourceId,
然後setDropDownViewResource又再設定一個樣式,為什麼呢?
因為textViewResourceId指的是下拉選單還未點選時的下拉選單樣式
而setDropDownViewResource設定的是點選下拉選單後跳出選單的樣式
這兩者是不一樣的,這樣說各位應該還是一頭霧水,我用圖片說明好了

new物件時樣式用simple_spinner_item

new物件時樣式用simple_spinner_dropdown_item


setDropDownViewResource物件時樣式用simple_spinner_item

setDropDownViewResource物件時樣式用simple_spinner_dropdown_item

有看清楚了嗎?new物件時textViewResourceId的樣式設定指的是下拉選單出現時的樣式
setDropDownViewResource指的是彈出下拉選單時,出現列表的樣式,此兩者是不同的
當然這兩者也都能使用自定義的佈局XML,只要自己新增一個XML,然後就能在textViewResourceId或setDropDownViewResource裡面選取,選單內的樣式也會跟著改變
以上是為你做ArrayAdapter的簡單介紹,謝謝。

沒有留言:

張貼留言

您的寶貴建議是我前進的動力!