4

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

  1. list.getAdapter().getItem(position);
  2. list.getItemAtPosition(position)

我的问题是,哪一种是首选的方法?

我见过有人同时使用这两种方法。

4

3 回答 3

3

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

于 2012-05-06T18:59:29.293 回答
2

这里是getItemAtPosition()来自源代码的实现ListView

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

所以基本上它们是一样的。

于 2012-05-06T19:06:10.060 回答
1

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

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

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

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

于 2015-03-25T20:38:59.777 回答