默认的 setListAdapter(adapter),它是使用系统默认的id 必须是"@+id/android:list"不能使用其它的
当自定义id时,程序里就不能直接 setListAdapter(adapter),想用其他的ID 你可以直接用Activity。
在ListActivity中,创建菜单功能(重写onCreateOptionsMenu()和onOptionsItemSelected()方法)
以及使用ArrayAdapter<String>与setListAdapter();main.xml中无LinearLayout或ListView描述。
无setContentView(R.layout.main);
eg.
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myTextView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
当然,如想自定义ListActivity的布局文件 ,只需在onCreate()方法里加入setContentView(R.layout.main);
但请留意,布局文件里必须包含Widget,eg.
<ListView
android:id="@+id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawSelectorOnTop="false"
/>
Android提供了三种基础菜单类型:
选项菜单Options Menu
上下文菜单Context Menu
子菜单Submenu
选项菜单Options Menu
/* Creates the Options menu items */
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(groupId, itemId0, order, "title");//groupId一组菜单,itemId0为按Menu键后显示的菜单列项中的某列
menu.add(groupId,itemId1,order,title);//order添加时的顺序排列.title为按Menu键后显示的菜单项的名字,可以是一个字符串资源
return true;
}
/* Handle item selections */
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case itemId0:
newGame();
case itemId1:
quit();
}
return super.onOptionsItemSelected(item);
}
增加图标
图标也可以通过setIcon()函数被添加到菜单项中。
setIcon(R.drawable.menu_quit_icon);
修改菜单
上下文菜单Context Menu
Android的上下文菜单在概念上和PC软件的右键菜单类似。
按住不动差不多两秒钟)动作,将出现一个提供相关功能的浮动菜单
final int EDIT_ID = 0;
final int DELETE_ID = 1;
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("asd");
menu.add(0, EDIT_ID, 0, "Edit");
menu.add(0, DELETE_ID, 0, "Delete");
}
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case EDIT_ID:
return true;
case DELETE_ID:
return true;
default:
return super.onContextItemSelected(item);
}
}
子菜单Submenus
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
SubMenu fileMenu = menu.addSubMenu("File");
SubMenu editMenu = menu.addSubMenu("Edit");
fileMenu.add("new");
fileMenu.add("open");
fileMenu.add("save");
editMenu.add("undo");
editMenu.add("redo");
return result;
}
子菜单中的选择将由onOptionsItemSelected() 回调处理。
在XML里定义菜单Define Menus in XML:
首先在目录res/menu/里创建一个名为options_menu.xml 的文件。
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:alphabeticShortcut='s'
android:title="@string/menu_save" />
<group android:id="@+id/menu_group_edit">
<item android:id="@+id/menu_revert"
android:icon="@drawable/ic_menu_revert"
android:title="@string/menu_revert" />
<item android:id="@+id/menu_delete"
android:icon="@drawable/ic_menu_delete"
android:title="@string/menu_delete" />
</group>
<group android:id="@+id/menu_group_insert">
<item android:id="@+id/menu_discard"
android:icon="@drawable/ic_menu_discard"
android:title="@string/menu_discard" />
</group>
</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
android:icon="@drawable/ic_menu_save"
android:alphabeticShortcut='s'
android:title="@string/menu_save" />
<group android:id="@+id/menu_group_edit">
<item android:id="@+id/menu_revert"
android:icon="@drawable/ic_menu_revert"
android:title="@string/menu_revert" />
<item android:id="@+id/menu_delete"
android:icon="@drawable/ic_menu_delete"
android:title="@string/menu_delete" />
</group>
<group android:id="@+id/menu_group_insert">
<item android:id="@+id/menu_discard"
android:icon="@drawable/ic_menu_discard"
android:title="@string/menu_discard" />
</group>
</menu>
然后,在onCreateOptionsMenu()方法里,我们通过MenuInflater.inflate()方法扩充这个资源:
view plaincopy to clipboardprint?
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate menu from XML resource
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.editor_options_menu, menu);
// Append to the
// menu items for any other activities that can do stuff with it
// as well. This does a query on the system for any activities that
// implement the ALTERNATIVE_ACTION for our data, adding a menu item
// for each one that is found.
Intent intent = new Intent(null, getIntent().getData());
intent.addCategory(Intent.CATEGORY_ALTERNATIVE);
menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0,
new ComponentName(this, NoteEditor.class), null, intent, 0, null);
return super.onCreateOptionsMenu(menu);
}