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

来源:互联网 发布:sqlserver 查看表注释 编辑:程序博客网 时间:2024/06/04 19:53

大概的代码如下:

    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());

原创粉丝点击