在手机实际应用中,我们常常需要列表来显示我们的信息,比如我们的联系人列表,短信信息列表等。在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 格式
建立描述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>
Toast:
Toast是一种提供给用户简洁信息的视图。Toast类帮助你创建和显示该信息。
该视图已浮于应用程序之上的形式呈现给用户。因为它并不获得焦点,即使用户正在输入什么也不会受到影响。它的目标是尽可能已不显眼的方式,使用户看到你提供的信息。有两个例子就是音量控制和设置信息保存成功。
使用该类最简单的方法就是调用一个静态方法,让他来构造你需要的一切并返回一个新的 Toast 对象。
常量
int LENGTH_LONG
持续显示视图或文本提示较长时间。该时间长度可定制。
参见
setDuration(int)
int LENGTH_SHORT
持续显示视图或文本提示较短时间。该时间长度可定制。该值为默认值。
参见
setDuration(int)