简单if语句配置Help / SectionPageAdapter显示信息

时间:2018-05-09 12:13:20

标签: java android loops object if-statement

好的,所以在我构建的程序的一部分中,有一个Activity接收并在ListView中显示ListFragments。此活动还有一个ViewPager(允许滑动)覆盖SectionPageAdapter的getItem方法,以便返回最终组成活动中5个不同可滑动部分的不同片段。

我对一般的编程比较陌生,我试图想一个只包含1个Activity和2个片段(可能是3个)的设计。

getItem覆盖返回一个片段,并显示5个选项卡中每个选项卡上显示的内容。两个片段将利用这个活动的布局,我想以某种方式能够制作一个条件语句,解释哪一个适合哪种情况。

这是我的代码:

import android.graphics.Color;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;

public class SchResRanActivity extends AppCompatActivity {
public boolean isRanking;
public int daysPassed;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sch_res_ran);

    //Toolbar schResRanBar = findViewById(R.id.theTopBar);
    //setSupportActionBar(schResRanBar);

    SectionPagerAdapter sectionPagerAdapter =
            new SectionPagerAdapter(getSupportFragmentManager());

    ViewPager pager = findViewById(R.id.pager);
    pager.setAdapter(sectionPagerAdapter);

    TabLayout tabLayout = findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(pager);
    //tabLayout.setSelectedTabIndicatorColor(Color.WHITE);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_schresran_bar, menu);

    return super.onCreateOptionsMenu(menu);
}

void setPageTitle(){}

private class SectionPagerAdapter extends FragmentPagerAdapter {

    private SectionPagerAdapter(FragmentManager fm) { super(fm); }

@Override
public int getCount() { return 6; }

@Override
public CharSequence getPageTitle(int position) {
    switch(position){
        case 0:
            return getResources().getString(R.string.day1);
        case 1:
            return getResources().getString(R.string.day2);
        case 2:
            return getResources().getString(R.string.day3);
        case 3:
            return getResources().getString(R.string.day4);
        case 4:
            return getResources().getString(R.string.day5);
        case 5:
            return getResources().getString(R.string.dayPlayoffs);
    }
    return null;
}
//this code depicts what I am trying to do but is way to clunky!
@Override
    public Fragment getItem(int position) {
       if (isRanking) {
        switch (position){
                case 0:
                     if (daysPassed >= 1) {
                    return new RankingsFragment();
                      } else {
                    return new NAFragment();
                case 1:
                       if (daysPassed >= 2) {
                    return new RankingsFragment();
                      } else {
                    return new NAFragment();
                case 2:
                     if (daysPassed >= 3) {
                    return new RankingsFragment();
                      } else {
                    return new NAFragment();                    case 3:
                case 4:
                     if (daysPassed >= 4) {
                    return new RankingsFragment();
                      } else {
                    return new NAFragment();
                case 5:
                     if (daysPassed >= 5) {
                    return new RankingsFragment();
                      } else {
                    return new NAFragment(); 
                    } 
                  return null;

             if (isRanking == false) {
             case 0:
                     if (daysPassed >= 1) {
                    return new ScheduleFragment();
                      } else {
                    return new NAFragment();
                case 1:
                       if (daysPassed >= 2) {
                    return new ScheduleFragment();
                      } else {
                    return new NAFragment();
                case 2:
                     if (daysPassed >= 3) {
                    return new ScheduleFragment();
                      } else {
                    return new NAFragment();                    case 3:
                case 4:
                     if (daysPassed >= 4) {
                    return new ScheduleFragment();
                      } else {
                    return new NAFragment();
                case 5:
                     if (daysPassed >= 5) {
                    return new ScheduleFragment();
                      } else {
                    return new NAFragment(); 
                    } 
        return null;
    }
    }
    }

此代码描述了我想要做的事情,但却是笨重的方式!有人可以提出一种更有效的方式来写这个吗?

假设有一个名为Rankings的按钮和一个名为Schedule的按钮。 这两个按钮的onClick都会带您进入SchResRan活动,但如果按下schedule按钮,则变量isRanking == false,并且每天都会显示不同的信息。所以如果过了几天== 0没有信息显示在任何页面上(所有页面都是NA片段)但是如果过了几天== 1那么第1天的页面将显示第1天的信息,如果过了几天== 2那天1和第2天页面将显示相应的信息,等等排名页面。

1 个答案:

答案 0 :(得分:0)

你可以为那个

创建方法
  public Fragment getItem(int position) {

       tempPosition=position+1;
      if (dayspassed>= tempPosition) 
          {
          if (isRanking) 
          {
          return new RankingsFragment();
          }else
          {
          return new ScheduleFragment();
          }
       } else 
       {
        return new NAFragment();
       }
     }
   }