列表视图是Android中最常见的一种视图组件,它以垂直列表的形式列出需要显示的列表项。比如显示系统设置项或功能内容列表等。在Android中,可以使用两种方法向屏幕中添加列表视图:一种是直接使用ListView组件创建;另一种是让Activity继承ListActivity实现
一、直接使用ListView组件创建,此处有两种
一种是直接就在XML文件中指定了item
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/cytpe" >
</ListView>
</LinearLayout>
这里使用了名称为ctype的数组资源,因此我们要在res/values目录中创建一个定义的数组资源的xml文件arrays.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string-array name="cytpe">
<item>情景模式</item>
<item>主题模式</item>
<item>手机</item>
<item>程序管理</item>
<item>通话设置</item>
<item>连接功能</item>
</string-array>
</resources
此处直接运行就出界面了
另一种是不再XML文件中指定资源,通过适配器来指定,代码如下
首先定义XML文件,不指定资源
关键代码:
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/ic_launcher"
android:dividerHeight="3px"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
>
</ListView>
然后在Activity中定义适配器,关键代码如下
ListView listView=(ListView)findViewById(R.id.listView1); ArrayAdapter<CharSequence>adapter=ArrayAdapter.createFromResource(this,R.array.cytpe,android.R.layout.simple_list_item_single_choice);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View arg1, int pos,
long id) {
String result=parent.getItemAtPosition(pos).toString();
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
}
});
二、让Activity继承ListActivity实现:
如果程序的窗口仅仅需要显示一个列表,则可以直接让Activity继承ListActivity来实现。继承ListActivity的类中无需调用setContentView方法来显示页面,而是可以直接为其设置适配器,从而显示一个列表。
代码如下:
public class MainActivity extends ListActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String []cytpeStrings=new String[]{"情景模式","主题模式","手机","程序管理"};
ArrayAdapter<String>adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice,cytpeStrings);
setListAdapter(adapter);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
String resultString=l.getItemAtPosition(position).toString();
Toast.makeText(getApplicationContext(), resultString, Toast.LENGTH_LONG).show();
}
}
至于用户选择了哪项并做哪些动作,可以在监听中定义