Хорошо, поэтому в части программы, которую я создаю, есть Activity, которая получает и отображает ListFragments в ListView. В этом действии также есть ViewPager (который позволяет осуществлять смахивание), который переопределяет метод getItem для SectionPageAdapter, чтобы возвращать различные фрагменты, которые в конечном итоге образуют 5 различных смахиваемых разделов в действии.
Я относительно новичок в программировании в целом, и я пытаюсь придумать дизайн, который состоит только из 1 занятия и 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;
}
}
}
Этот код отображает то, что я пытаюсь сделать, но это очень неудобно! Может кто-нибудь предложить более эффективный способ написать это?
Предположим, что есть кнопка под названием «Рейтинги» и кнопка «Расписание».
onClick обеих этих кнопок приводит вас к активности SchResRan, но если нажать кнопку расписания, переменная isRanking == false и каждый день появляется другая информация. таким образом, если пройденные дни == 0, никакая информация не отображается ни на одной странице (все страницы будут фрагментами NA), но если пройденные дни == 1, на странице дня 1 будет отображаться информация дня 1, если пройденные дни == 2 дня 1 и дня 2 страница будет отображать соответствующую информацию, и так далее, то же самое для страниц рейтинга.