ListView:单击后将列表项保持在相同位置

时间:2018-10-12 16:43:24

标签: android listview

当我(长按)单击我的 ListView 中的某个项目时,某些列表项会更改其高度(按预期),并且所单击的项会突然移动(有时甚至看不见)。如何将其放在手指下?

通过使用 list.smoothScrollToPosition(),我只能选择哪个项(按索引)将是最可见的项。

view.setTop()(以像素为单位)似乎没有任何作用。

我还尝试了 list.smoothScrollByOffset()(以像素为单位),但随后我需要知道我的物品移动了多少。但是很遗憾,重绘之前的 view.getTop()与重绘之后的 view.getTop()相同。

有什么主意吗?

list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        // some action changing the height of some list items
        notifyDataSetChanged();
        // How to bring the clicked list item back under my finger?
        return true;
    }
});

1 个答案:

答案 0 :(得分:0)

很抱歉问得太快。经过更多的谷歌搜索后,我找到了解决方法in this question

list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        int top = view.getTop();
        // some action changing the height of some list items
        notifyDataSetChanged();
        list.setSelectionFromTop(position, top);
        return true;
    }
});