【问题标题】:How to keep grid view scroll position after fragment pop back stack?片段弹出堆栈后如何保持网格视图滚动位置?
【发布时间】:2016-04-18 04:35:23
【问题描述】:

我正在开发一个活动中包含多个片段的 android 应用程序。我在片段内使用网格视图。当我更改片段然后将堆栈弹回旧片段时,网格视图滚动位置更改为位置零。片段弹回堆栈后如何保持网格视图滚动位置?

【问题讨论】:

  • 不要在 onResume() 中设置网格视图适配器。
  • 你的问题和这个问题密切相关:stackoverflow.com/questions/3014089/…。看看这个。它是关于 ListView 但似乎(经过快速检查)所有使用的方法都来自 AbsListView GridView 也继承自。
  • 你能分享你设置适配器的代码吗,可能是你的适配器在弹出菜单关闭时重置。
  • 当你添加下一个片段时,不要替换它,而是让它添加并设置 addToBackStack
  • @sopheak 并忘记提及将此布局的背景设置为白色或您提供的任何颜色似乎不会重叠并使根布局可点击为真

标签: android android-fragments


【解决方案1】:

好吧,这样做

在你的 onCreateView() 方法中

GridAdapter yourGridAdapter;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ...

    if(yourGridAdapter ==null){
     yourGridAdapter = new GridAdapter();
    }

    GridView gridView = (GridView) convertView.findViewById(R.id.your_grid_view);
    gridView.setAdapter(yourGridAdapter);

    ...
    }

解释:

当片段从其 onCreateView() 和方法的弹回堆栈重新加载时,在片段生命周期中直到 onResume() 被调用,如果您在 onCreateView() 方法中重新实例化适配器,则将再次创建 gridView 项目但如果你不实例化它,相同的适配器将附加到 gridView。

【讨论】:

  • 感谢您的解决方案。我可以保持滚动位置。但是当我滚动到 GridView 的末尾(最后一个 GridView 项)然后转到下一个片段时,返回堆栈片段后滚动位置错误。否则向右滚动位置。你还有什么想法吗?
  • 将 GridLayoutManager 与 RecyclerView 一起使用可能会有所帮助,因为我对 GridView 不太了解
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
  • 2014-11-04
  • 1970-01-01
  • 2012-07-06
相关资源
最近更新 更多