【问题标题】:For loop LoopingFor循环循环
【发布时间】:2016-12-30 13:34:24
【问题描述】:

我的问题是我在选项卡布局中创建了 8 个 viewpager。假设我想要 3 个视图页面,我需要这些页面,但我想删除其余页面。

这是我添加选项卡的代码,我使用 for 循环删除剩余的选项卡,但出现错误 “Invalid index 6, size is 6”,因此它没有满足我的要求。如何调整我的 for 循环功能。

 BasePagerAdapter adapter = new BasePagerAdapter(getSupportFragmentManager());
    Tab1 tab1 = new Tab1();
    Tab2 tab2 = new Tab2();
    Tab3 tab3 = new Tab3();
    Tab4 tab4 = new Tab4();
    Tab5 tab5 = new Tab5();
    Tab6 tab6 = new Tab6();
    Tab7 tab7 = new Tab7();
    Tab8 tab8 = new Tab8();
    Tab9 tab9 = new Tab9();

    adapter.addFragment(tab1, "All");
    adapter.addFragment(tab2, "1");
    adapter.addFragment(tab3, "2");
    adapter.addFragment(tab4, "3");
    adapter.addFragment(tab5, "4");
    adapter.addFragment(tab6, "5");
    adapter.addFragment(tab7, "6");
    adapter.addFragment(tab8, "7");
    adapter.addFragment(tab9, "8");

    //Initializing viewPager
    viewPager = (ViewPager) findViewById(R.id.pager);

    //Creating our pager adapter


    //Adding adapter to pager
    viewPager.setAdapter(adapter);

    int ans =3;
    for(int i =8 ; ans<=i ; ans++) {

        adapter.removeFragment(ans);
    }

【问题讨论】:

  • ans在哪里?
  • i 的意义何在? for(int i =8 ; ans&lt;=i ; ans++)for (; ans &lt;= 8; ans++) 相同,因为您永远不会更改 i。相反,请尝试 for (int i = 8; i &gt;= ans; i--) { adapter.removeFragment(i); } 从末尾删除它们,以便索引值在删除过程中保持不变。
  • 抱歉,问题已编辑
  • 然后 ans++;在循环为 4 之前,将为您提供 3 个您需要的标签

标签: java android for-loop android-viewpager android-tablayout


【解决方案1】:
int ans=3;         //you need only 3

for(int i =8 ; i>ans ; i--)   //i for total count. make sure that size
{

    adapter.removeFragment(i);//it remove the pager 8,7,6,5,4
}

【讨论】:

  • i >= ans ..如果你想删除 3 意味着使用 = 或者只是 > 就足够了
  • @Andreas 在之前的评论中说过
【解决方案2】:

我想你一定用过List

当从List 中删除索引i 处的元素时,索引大于i 的元素会被移动。

在您的情况下,当ans 变为6 时,List 有六个元素,其索引可以是0 to 5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2020-07-10
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    相关资源
    最近更新 更多