selecteditem(什么是selecteditem)
一、...方法与onOptionsItemSelected()方法有什么区别
在点击选项菜单(OptionsMenu:点击menu弹出的菜单)的菜单项时即调用了onMenuItemSelected也调用了onOptionsItemSelected,于是疑惑他们有什么不一样。然后再看上下文菜单(ContextMenu:长按控件时弹出。例如在长按EditTextView时弹出输入的法选择菜单),点击上下文菜单的菜单项时即调用了onMenuItemSelected也调用了onContextItemSelected,于是问题就明朗了。在父Activity的onMenuItemSelected方法中判断如果是选项菜单就走onMenuItemSelected,如果是上下文菜单就走onContextItemSelected。
除此还有
onPrepareOptionsMenu:在显示选项菜单前调用
onOptionsMenuClosed:在选项菜单关闭时被调用
onContextMenuClosed:在上下文菜单关闭时调用
二、datalist控件的Items属性是什么意思
Items介绍和作用
Items是DataGridItem的集合,可以遍历当前DataGrid中显示数据的DataGridItem。
5.1、DataGridItem
每一个DataGridItem就是DataGrid中显示的一行,其中包括:
Header DataGrid控件的标题部分
Item DataGrid控件中的项
AlternatingItem DataGrid控件中的交替项
SelectedItem DataGrid控件中的选定项(由SelectedIndex设置,通过SelectedItem属性或者Items[SelectedIndex]来读取)
EditItem DataGrid控件中处于编辑状态的项(由EditItemIndex设置,通过Items[EditItemIndex]来读取)
Separator DataGrid控件中项之间的分隔符
Footer DataGrid控件的脚注部分
Pager DataGrid控件的页选择节
注意,DataGrid的Items属性中不会包含Header、Footer、Pager这三类DataGridItem的。
5.1.1、DataGridItem的属性
ItemIndex——得到行在Items中的索引
ItemType——返回行的类型,也就是上面列出的Header、Item、...、Pager
Cells——返回行包含的所有TableCell(不管是显示声明的,还是自动生成的,不管是可以看见的,还是隐藏掉的),通过TableCell,可以读取Cell中显示的文本、包含的控件
严重注意:只有BoundColumn列和自动生成列,才可以通过TableCell.Text属性读取显示的文本。HyperLinkColumn、ButtonColumn、EditCommandColumn都需要将目标控件转换成相应的控件。
比如:
假设DataGrid的第一列声明如下
<asp:HyperLinkColumn DataTextField="au_id" HeaderText="au_id" DataNavigateUrlField="au_id" DataNavigateUrlFormatString="Edit.aspx?id={0}"></asp:HyperLinkColumn>
读取的时候可以用:
//Items[0]表示第一行,Cells[0]表示第一列,Controls[0]表示Cell中的第一个控件(也只有这个控件可以用)
HyperLink link=(HyperLink)DataGrid1.Items[0].Cells[0].Controls[0]);
Response.Write(link.Text);
至于模板列(TemplateColumn),当然也可以通过DataGrid1.Items[i].Cells[j].Controls[n]来获取,然后转换成原来的控件类型再操作,但是还有个更好的办法,就是用FindControl来查找控件。
FindControl是System.Web.UI.Control的方法,可以根据子控件ID来查找子控件
比如:
假设DataGrid的某一列声明如下
<asp:TemplateColumn>
<ItemTemplate>
<asp:TextBox Runat="server" ID="txtID" Text='<%# DataBinder.Eval(Container.DataItem,"au_id")%>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
读取方法:
TextBox txt=(TextBox)DataGrid1.Items[1].FindControl("txtID");
Response.Write(txt.Text);
注意:DataList中是没有Cell的
三、android 的 getSelectedItemPosition() 方法的问题
这是一个默认值,不是手动去选择某一个item的position值,这个是在控件初始化完成后,这个值就已经是定死的,不管选择哪个这个值都是既定的值。
这个是会在选择其中一个item的时候会改变,如果在点击一个item之后,再Log.e("!",dialog.getListView().getSelectedItemPosition()+"");
应该可以看到是现在想要的值一定是在触发这个item被选中的事件中。
dialog.getListView().getSelectedItemPosition()
getListView是返回了listview
然后调用listview的getSelectedItemPosition,这个不是点单选以后返回选中,而是指的那一个条目的时候选中的。
可以去看看api文档说明关于listview。