標籤:
在手機實際應用中,我們常常需要列表來顯示我們的資訊,比如我們的連絡人清單,簡訊資訊列表等。在Android中通過ListView來實現。
ListView 的XML屬性
屬性名稱 |
描述 |
android:choiceMode |
規定此ListView所使用的選擇模式。預設狀態下,list沒有選擇模式。屬性值必須設定為下列常量之一: none,值為0,表示無選擇模式; singlechoice,值為1,表示最多可以有一項被選中; multichoice,值為2,表示可以多項被選中。 |
android:divider |
規定List項目之間用某個圖形或顏色來分隔。可以用"@[+][package:]type:name"或者"?[package:][type:]name"(主題屬性)的形式來指向某個已有資源;也可以用"#rgb","#argb","#rrggbb"或者"#aarrggbb"的格式來表示某個顏色。 |
android:dividerHeight |
分隔字元的高度。若沒有指明高度,則用此分隔字元固有的高度。必須為帶單位的浮點數,如"14.5sp"。可用的單位如px(pixel像素),dp(density-independent pixels 與密集度無關的像素), sp(scaled pixels based on preferred font size 基於字型大小的固定比例的像素), in (inches英寸), mm (millimeters毫米)。 可以用"@[package:]type:name"或者"?[package:][type:]name"(主題屬性)的格式來指向某個包含此類型值的資源。 |
android:entries |
引用一個將使用在此ListView裡的數組。若數組是固定的,使用此屬性將比在程式中寫入更為簡單。 必須以"@[+][package:]type:name"或者 "?[package:][type:]name"的形式來指向某個資源。 |
android:footerDividersEnabled |
設成flase時,此ListView將不會在頁尾視圖前畫分隔字元。此屬性預設值為true。 屬性值必須設定為true或false。 可以用"@[package:]type:name"或者"?[package:][type:]name"(主題屬性)的格式來指向某個包含此類型值的資源。 |
android:headerDividersEnabled |
設成flase時,此ListView將不會在頁首視圖後畫分隔字元。此屬性預設值為true。 屬性值必須設定為true或false。 可以用"@[package:]type:name"或者"?[package:][type:]name"(主題屬性)的格式來指向某個包含此類型值的資源。 |
例子一:利用Android內建的List格式XML布局檔案
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="8dp" android:paddingRight="8dp"> <ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="0dip" android:background="#FFFFFF" android:divider="#000000" android:dividerHeight="2dp" android:layout_weight="1" android:drawSelectorOnTop="false"/> <TextView android:id="@id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FF0000" android:text="No Data"/>"</LinearLayout>
原始碼:
@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); String[] contries= getResources().getStringArray(R.array.countries_arry); setContentView(R.layout.activity_listview); setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,contries)); getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); //這裡我們直接在原始碼中設定選擇模式,也可以在xml檔案中進行配置 getListView().setBackgroundColor(Color.WHITE); getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long id) { Toast.makeText(getApplicationContext(),((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } }); }ListView的選擇模式有三種:CHOICE_MODE_NONE:表示無選擇模式;設定為無選擇模式時,將不能選中Item項,但能響應ItemClick事件CHOICE_MODE_SINGLE:表示最多可以有一項被選中CHOICE_MODE_MULTIPLE:表示可以多項被選中方法setListAdapter 設定ListView背後的資料。參數為ListAdapter,這裡我們使用ArrayAdapter,該Adatper可以指定我們自己定義的Item對象。這裡我使用系統已有的對象:android.R.layout.simple_list_item_single_choice 一般的:simple_list_item_single_choice 對應的選擇模式為: CHOICE_MODE_SIGLE; (效果一)simple_list_item_multiple_choice 對應的選擇模式為: CHOICE_MODE_MULTIPLE (效果二)simple_list_item_1 對應的選擇模式為: CHOICE_MODE_NONE (效果三)自訂ListView 格式建立描述list item格式的XML檔案
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="2dp" android:paddingRight="2dp" ></TextView>
源檔案設定xml檔案
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] contries = getResources().getStringArray(R.array.countries_arry); setListAdapter(new ArrayAdapter<String>(this,R.layout.activity_mylistview, contries)); getListView().setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view,int position, long id) { Toast.makeText(getApplicationContext(),((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } }); }
另外上面用到了數組string 的定義:在values/string.xml檔案中定義如下:
<string-array name="countries_arry"> <item>Bharain</item> <item>Bangladesh</item> <item>Barbados</item> <item>Belarus</item> <item>Belgium</item> <item>Belize</item> <item>Benin</item> </string-array>
這樣就可以在原始碼中通過R.array.countries_arry引用Toast:
Toast是一種提供給使用者簡潔資訊的視圖。Toast類協助你建立和顯示該資訊。
該視圖已浮於應用程式之上的形式呈現給使用者。因為它並不獲得焦點,即使使用者正在輸入什麼也不會受到影響。它的目標是儘可能已不顯眼的方式,使使用者看到你提供的資訊。有兩個例子就是音量控制和設定資訊儲存成功。
使用該類最簡單的方法就是調用一個靜態方法,讓他來構造你需要的一切並返回一個新的 Toast 對象。
常量
int LENGTH_LONG
持續顯示視圖或文本提示較長時間。該時間長度可定製。
參見
setDuration(int)
int LENGTH_SHORT
持續顯示視圖或文本提示較短時間。該時間長度可定製。該值為預設值。
參見
setDuration(int)
Android學習筆記ListView