zoukankan      html  css  js  c++  java
  • Android学习笔记ListView

    在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等。在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)

  • 相关阅读:
    A1044. Shopping in Mars (25)
    A1019. General Palindromic Number (20)
    A1018. Public Bike Management (30)
    26850: 收集数码晶体 有40%错误
    A1016. Phone Bills (25)
    A1014. Waiting in Line (30)
    A1011. World Cup Betting (20)
    A1010. Radix (25)
    A1009. Product of Polynomials (25)
    A1008. Elevator (20)
  • 原文地址:https://www.cnblogs.com/dennytao/p/5351902.html
Copyright © 2011-2022 走看看