getItem与getItemAtPosition

时间:2012-05-06 18:54:33

标签: android performance

有两种获取列表视图的选定项目的方法。

  1. list.getAdapter().getItem(position);
  2. list.getItemAtPosition(position)
  3. 我的问题是,哪一种是首选方式?

    我见过人们都使用它们。

3 个答案:

答案 0 :(得分:3)

您可以使用您想要的那个。 getItemAtPosition(position)基本上使用getItem(position)调用适配器,这是一回事。

答案 1 :(得分:2)

以下是getItemAtPosition()源代码中ListView的实现。

public Object getItemAtPosition(int position) {
  T adapter = getAdapter();
  return (adapter == null || position < 0) ? null : adapter.getItem(position);
}

基本上他们是一样的。

答案 2 :(得分:1)

其他答案不正确,有一个很大的区别。

当您向ListView添加标头时,ListView将适配器包装在HeaderViewListAdapter中。 HeaderViewListAdapter的工作是翻译position以考虑标题。

例如,如果您添加了一个标题position 1对应于基础适配器的position 0。如果您尝试使用adapter.getItem(position),它实际上会返回适配器中的第二项。

如果您添加了标题,则必须使用listView.getItemAtPosition(position)。