Android學習筆記ListView

來源:互聯網
上載者:User

標籤:

在手機實際應用中,我們常常需要列表來顯示我們的資訊,比如我們的連絡人清單,簡訊資訊列表等。在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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.