【问题标题】:Collect data from multiple fragments in a viewpager从 viewpager 中的多个片段收集数据
【发布时间】:2015-07-25 15:18:39
【问题描述】:

我使用 baseadapter 创建了一个自定义列表视图。列表项包含一个用于多选目的的复选框。我在 baseadapter 中添加了一个函数,该函数返回所选项目的位置。

为了对列表项进行分类,我尝试使用带有 FragmentPagerAdapter 的 Viewpager 将列表视图放入片段中。现在每个片段都有自己的多选列表视图。用户需要能够在页面之间滑动并最终选择项目,然后再移动到下一个活动我必须将所有选定的项目位置收集到一个二维列表或数组中。

我的问题: 似乎 Viewpager 在内存中只保留了 2 个额外的页面,位于当前页面的任一侧。如果我的 viewpager 在角落或超过 3 页,我无法收集某些片段中的选定项目列表。

我将不胜感激。

【问题讨论】:

    标签: android android-fragments android-viewpager baseadapter multichoiceitems


    【解决方案1】:

    让每个Fragment 在用户离开时将所选项目保存到SharedPreferences。稍后让您的其他 ActivitySharedPreferences 检索项目。

    int len = listView.getCount();
    SparseBooleanArray checked = listView.getCheckedItemPositions();
    for (int i = 0; i < len; i++)
    {
        if (checked.get(i)) 
        {
            // Get the item
            // Deal with the checked item. 
            // ex: add to ArrayList
            arrayList.add(item);
        }
    }
    
    Set<String> set = new HashSet<String>();
    set.addAll(arrayList);
    mSharedPreferences.edit().putStringSet("key", set).apply();
    

    【讨论】:

    • 每次我滑动时 pagechangelistener 不会触发事件吗?
    • @Deepak 我会将这个逻辑放在每个FragmentonPause() 方法中,而不是在页面更改侦听器中。不过,我不知道您的应用程序的结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多