Android getItem vs.getItemAtPosition
获取列表视图的选定项有两种方法Android getItem vs.getItemAtPosition,android,performance,Android,Performance,获取列表视图的选定项有两种方法 list.getAdapter().getItem(位置) list.getItemAtPosition(位置) 我的问题是,哪一种方法更可取 我见过有人两者都用。你想用哪一种都行getItemAtPosition(position)基本上使用getItem(position)调用适配器,这是相同的 下面是来自ListView源代码的getItemAtPosition()的实现 public Object getItemAtPosition(int positio
list.getAdapter().getItem(位置)代码>
list.getItemAtPosition(位置)
我见过有人两者都用。你想用哪一种都行
getItemAtPosition(position)
基本上使用getItem(position)
调用适配器,这是相同的 下面是来自ListView
源代码的getItemAtPosition()
的实现
public Object getItemAtPosition(int position) {
T adapter = getAdapter();
return (adapter == null || position < 0) ? null : adapter.getItem(position);
}
public对象getItemAtPosition(int位置){
T adapter=getAdapter();
返回(adapter==null | | position<0)?null:adapter.getItem(position);
}
所以基本上他们是一样的。其他答案都不正确,有一个很大的区别 将头添加到ListView时,ListView会将适配器包装在HeadServiceWListAdapter中。HeaderViewListAdapter的工作是翻译
位置
,以将标题考虑在内
例如,如果添加了一个标题位置1
,则对应于基础适配器的位置0
。如果您试图使用adapter.getItem(position),它实际上会返回适配器中的第二项
如果添加了标题,则必须使用listView.getItemAtPosition(position)。从技术上讲,第一个标题快0.0000000001毫秒,少1个函数调用:)Thanks@eric.itzhak是的,你可以这样看,但我们严肃点,这并不是让你的应用程序快速启动的原因:)我的答案基于ListView小部件的源代码(你也可以在另一个答案中找到)。要解释一下getItemAtPosition()(调用适配器的getItem()方法)与简单调用适配器的getItem()方法(无论适配器的类型如何)有什么区别吗?你测试过你的主张吗?我在回答中解释了不同之处。