今天學到的是spinner,就是下拉列表,這可不是ExpandListView哈。
閑話不解釋。這是控件,所以先上布局:就不上線性布局了,基本上可以總結出,控件都得在布局里寫,寫之前嵌個布局就行。
<Spinner
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:entries="@array/spinner_arr" 這邊介紹下,這是下拉列表的各個列表的數據,這是給第二個簡單的列表寫法用的,我們現在講的是自己寫自己的列表數據
android:prompt="@string/spinner_prompt" 這個是下拉列表的標題,不能在這直接寫字符串,得到Values里的string里寫好,再調用
android:spinnerMode="dialog" 有兩種方式,dialog和dropdown,一個是對話框,一個是下拉框。
android:id="@+id/sp1"/>
這個是在Values里頭創建的一個array:
<?xml version="1.0" encoding="UTF-8"?>
-<resources>
-<string-array name="spinner_arr">
<item>星期一</item>
<item>星期二</item>
<item>星期三</item>
<item>星期四</item>
<item>星期五</item>
<item>星期六</item>
<item>星期日</item>
</string-array>
</resources>
然后這邊就先在drawable里創建幾張圖片
再搞個布局來給下拉列表里的列表
這邊和ExpandListView差不多,我們得寫個適配器,
會不會奇怪,為啥List有個Person。其實就是自己寫個封裝的類
這邊就是創了兩個變量,一個是圖片id,一個是文本。
然后就是主活動里添加適配器,前面的學習自己寫適配器已經游刃有余。
其實下拉列表有三個監聽,但是聽學長說,只有這個才真的有用,其他兩個沒太大意義。
這邊里面的東西應該都好懂,先連接適配器,然后創建setOnItemSelectedListener,在里頭寫好監聽方法,然后new一個Person對象,position還是簡單吧?
這就是所選的下標,我們就是直接把列表點擊的位置的信息存下,因為list本就是存person類型的。
再把信息提示出來。
圖片和對應的文字都是布局里的,在適配器getView里面已經調用布局了。
這是比較成熟的方法吧,前面還講過兩個簡單列表的寫法:
private String[] arr;
還記得布局里的entries吧,它就是給列表輸入信息的,我們當時是直接調用values里自己創建的array,,有點像數據庫的調用,就是寫好數據,再調用,這樣局限性比較大。寫法比較簡單吧。
arr = getResources().getStringArray(R.array.spinner_arr);就是獲取資源,獲取字符串數組,在哪?在array里的spinner_arr.
就這么簡單。
下面這種也是用適配器,但是我們不自定義適配器,而是使用現有的
其實我對這個適配器一點都不了解,網上百度了好久,也是一點不了解,那些人的思想我不懂,比較難受。
反正簡單用法就這樣,,個人理解就是,
創建時的三個參數。第一個上下文是本身,那個很長的布局路徑其實就是一個文本的布局,但是大費周章的這樣,咱也不懂,后面的就是添加一個列表進去。
下面調用的那個冗長的setDropDownViewResource就是給它傳遞一個下拉列表的布局,也是一個文本布局控件,好像就是邊距大了點吧。
最后用下拉列表連接適配器。