您的位置:华清远见教育科技集团 >> Android资料 >> Android系统控件ListView  
 
Android系统控件ListView
分享到:

Android系统控件ListView是一种用于垂直显示的列表控件,如果显示内容过多,则会出现垂直滚动条。

ListView能够通过适配器将数据和自身绑定,在有限的屏幕上提供大量内容供用户选择,所以是经常使用的用户界面控件。同时,ListView支持点击事件处理,用户可以用少量的代码实现复杂的选择功能。例如,调用setAdapter()提供的数据和View子项,并通过setOnItemSelectedListener()方法监听ListView上子项选择事件。

若Activity由一个单一的列表控制,则Activity需继承ListActivity类而不是之前介绍的常规的Activity类。如果主视图仅仅只是列表,甚至不需要建立一个layout,ListActivity会为用户构建一个全屏幕的列表。如果想自定义布局,则需要确定ListView的id 为@android:id/list,以便ListActivity知道其Activity的主要清单。

下面就通过一个例子来加深对ListView的理解,如图1所示。


图1 ListView效果图

1.建立一个“ListViewDemo”程序

XML文件中的代码如代码清单1所示。

代码清单1 main.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
    xmlns:android="//schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TextView
    android:id="@+id/selection"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
    <ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:drawSelectorOnTop="false"
    />
    </LinearLayout>

2.修改ListViewDemo.java文件

在ListViewDemo.java文件中,首先需要为ListView创建适配器,配置和连接列表,添加ListView中所显示的内容。

代码清单2 ListViewDemo.java

public class ListViewDemo extends ListActivity {
    TextView selection;
    String[] items={"lorem", "ipsum", "dolor", "sit", "amet",
                    "consectetuer", "adipiscing", "elit", "morbi", "vel",
                    "ligula", "vitae", "arcu", "aliquet", "mollis",
                    "etiam", "vel", "erat", "placerat", "ante",
                    "porttitor", "sodales", "pellentesque", "augue", "purus"};
    @Override
    public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);
    setListAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1,items));
    selection=(TextView)findViewById(R.id.selection);
    }
    public void onListItemClick(ListView parent, View v, int position,long id) {
    selection.setText(items[position]);
    }
    }

继承ListActivity后,可以通过setListAdapter()方法设置列表。这种情况下,提供了一个ArrayAdapter包装的字符串数组。其中ArrayAdapter的第二个参数android.R.layout.simple_ list_item_1控制了ListView中行的显示,上例中android.R.layout.simple_list_item_1该值提供了标准的Android清单行:大字体、很多的填充、文本和白色。重写onListItemClick方法以在列表上子项的选择发生变化时及时更新其文本。

在默认情况下,ListView只对列表子项的点击事件进行监听。但ListView也跟踪用户的选择,或多个可能的选择列表,但它需要一些变化。

·在Java代码中调用ListView的setChoiceMode()方法来设置选择模式,可供选择的模式有:CHOICE_MODE_SINGLE和CHOICE_MODE_MULTIPLE两种。可以通过getListView()方法在ListActivity中获取ListView。

·在构造ArrayAdapter时,第二个参数选择使用以下两种参数可以使列表上子项单选或是复选:android.R.layout.simple_list_item_single_choice和android.R.layout. simple_list_item_multiple_choice,如图2所示。

 
图2 单选、复选模式

通过调用getCheckedItemPositions()方法来判断用户选择的子项。

 更多相关文章

·Android系统控件Spinner
·Android系统控件CheckBox 和 RadioButton
·Android系统控件Button 和 ImageButton
·Android系统控件TextView和EditText
·Android界面布局之绝对布局