您的位置:首页 > 移动开发 > Android开发

Android ListView中如何进行精确的定位

2013-08-28 14:31 316 查看
大概的代码如下:

private final LinkedList<Integer> mPositionsList = new LinkedList<Integer>();
    private final LinkedList<Integer> mHeightsList = new LinkedList<Integer>();

......
......
在 onItemClick(AdapterView<?> parent, View view, int position, long id)  中记录点击的位置,以及相对第一行的位置,
                    int iFirstPosition = mListView.getFirstVisiblePosition() == 0 ? -1 : mListView
                            .getFirstVisiblePosition();
                    int mToTopHeight = (position - iFirstPosition)
                            * (view.getHeight() + mListView.getDividerHeight())
                            - mListView.getDividerHeight();
                    mPositionsList.add(position);
                    mHeightsList.add(mToTopHeight);
......
......
在需要恢复的位置上添加以下代码:
            mListView.setSelectionFromTop(mPositionsList.getLast(), mHeightsList.getLast());
            mPositionsList.removeLast();
            mHeightsList.removeLast();


当前位置相对于第一个可显示的位置的高度是:

(当前位置 - 第一个显示在Listview中的位置) * (item 项高 + 分隔符高) - 一个分隔符的高度

在恢复位置时调用:

mListView.setSelectionFromTop(mPositionsList.getLast(), mHeightsList.getLast());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐