码迷,mamicode.com
首页 > 其他好文 > 详细

ListView addHeaderView 对 position 的影响

时间:2014-08-15 17:43:29      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   strong   ar   div   

 

1. 在 public View getView(int position, View convertView, ViewGroup parent)
position 和 是否有headerView无关,列表item的序号。


2. 在 public void onItemClick(AdapterView<?> parent, View view, int position, long id) 点击事件中
position 是算上了headerView的
要对应上 列表item的序号需要 position-=mListView.getHeaderViewsCount();


3. 比较坑的是 Adapter 的 public Object getItem(int position) 方法。
如果调用了addHeaderView,则用 mListView.getAdapter() 获取的adapter不是开始设置进去的那个adapter。
而是一个HeaderViewListAdapter,对原始Adapter进行了包装。
用这个 mListView.getAdapter().getItem(position); 时,会对position-=headerCound后,再调用原始的Adapter的getItem

public Object getItem(int position) {
        // Header (negative positions will throw an ArrayIndexOutOfBoundsException)
        int numHeaders = getHeadersCount();
        if (position < numHeaders) {
            return mHeaderViewInfos.get(position).data;
        }

        // Adapter
        final int adjPosition = position - numHeaders;
        int adapterCount = 0;
        if (mAdapter != null) {
            adapterCount = mAdapter.getCount();
            if (adjPosition < adapterCount) {
                return mAdapter.getItem(adjPosition);
            }
        }

        // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException)
        return mFooterViewInfos.get(adjPosition - adapterCount).data;
    }

 

ListView addHeaderView 对 position 的影响,布布扣,bubuko.com

ListView addHeaderView 对 position 的影响

标签:style   blog   color   os   io   strong   ar   div   

原文地址:http://www.cnblogs.com/zijianlu/p/3915299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!