ListActivity是一个默认布局为全屏列表的界面布局。
不想使用ListActivity的默认布局时,可以在重写onCreate方法时,在方法内部调用setContentView方法来设置自己的布局方式。此时布局中必须包含一个ListView,它的id为"@+id/android:list"的。若还指定了一个id为"@+id/android:empty"的view,当ListView中没有数据要显示时,这个view就会被显示,同时 ListView会被隐藏。
<!-- id为@id/android:list的ListView为客户化的list布局,如果没有,则系统会调用默认的布局 -->
<ListView
android:id="@+id/android:list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- 当ListView中没有数据时,id为@id/android:empty的view就会显示出来 -->
<TextView
android:id="@+id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
而在Java代码中ListActivity的固定创建方法如下,同时定义了item的点击事件。
public class MainActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 菜单项数组
String[] items = {"One","Two"};
// 将菜单项数组设置为ListView的列表项展示
setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, items));
getListView().setTextFilterEnabled(true);
}
// 响应菜单项的单击事件
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = null;
switch (position) {
case 0:
intent = new Intent(MainActivity.this,TestOne.class);
startActivity(intent);
break;
case 1:
intent = new Intent(MainActivity.this,TestTwo.class);
startActivity(intent);
break;
}
}
}
public class ListActivityDemo extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//定义一个List补全方法fillList
List<String> items = fillList();
//List列表监听器
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, items);
setListAdapter(adapter);
}
private List<String> fillList() {
List<String> items = new ArrayList<String>();
items.add("One");
items.add("Two");
// items.clear();
return items;
}
}