单击ListView项时显示下拉PopupWindow,然后滚动ListView?

时间:2014-05-07 13:44:55

标签: android android-listview

当显示PopupWindow并滚动ListView时,锚定项目不在窗口中,适配器将回收该项目的视图。然后PopupWindow开始在屏幕上跳跃,因为它不知道它的原始锚位于何处。

有没有正确的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

理想情况下,我认为显示PopupWindow不是正确的解决方案。

无论如何,如果你已经有了这个,列表滚动应该关闭PopupWindow因为你已经滚动列表所以保持它没有意义。

答案 1 :(得分:0)

可能的解决方案如下:

  1. 锚点视图的祖父表是Adapter.getView()返回的视图。在显示PopupWindow作为下拉列表时,将标记存储在祖父母的标记中。还存储对此gandparent的引用,以及所选的项目ID。
  2. Adapter.getView()中,当请求的商品ID等于所选商品ID时,请使用PopupWindow.update()将弹出窗口附加到新视图。从旧祖父母中删除标签并更新祖父母参考。
  3. Adapter.getView()中如果您获得具有已标记标记的convertView,并且所请求的项ID与所选项ID不同,请使用PopupWindow.update()取消附加弹出窗口祖父母。将祖父母设为null
  4. 这有点复杂,所以我还没有尝试过,但它应该有效,我会在这里写一下,以防有人感兴趣。