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()方法(无论适配器的类型如何)有什么区别吗?你测试过你的主张吗?我在回答中解释了不同之处。