После долгого времени между обучением коду и теперь я пытаюсь создать приложение для Android, которое использует вид списка карточек и использует вкладки.Создание фрагментов из списка с вкладками
Я хочу иметь список карт на всех 3 вкладках, но в каждом списке по-другому. Теперь, когда я сделал это, я получаю тот же набор во всех 3 вкладках. Я знаю, что делаю что-то неправильно, но после чтения на фрагментах и вкладках я не могу понять, как это реализовать.
У меня есть следующее в моей MainActivity.
public class MainActivity extends FragmentActivity implements Card.CardMenuListener<Card>{
private final Handler handler = new Handler();
private PagerSlidingTabStrip tabs;
private ViewPager pager;
private MyPagerAdapter adapter;
private Drawable oldBackground = null;
private int currentColor = 0xFF3F9FE0;
@Override
public void onCreate(Bundle savedInstanceState) {
// This is quick way of theming the action bar without using styles.xml (e.g. using ActionBar Style Generator)
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.holo_blue_dark)));
getActionBar().setDisplayShowHomeEnabled(false);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
// Initializes a CardAdapter with a blue accent color and basic popup menu for each card
CardAdapter<Card> cardsAdapter = new CardAdapter<Card>(this)
.setAccentColorRes(android.R.color.holo_blue_light)
.setPopupMenu(R.menu.card_popup, this);
cardsAdapter.add(new CardHeader(this, R.string.themeheader));
cardsAdapter.add(new Card("Action", "Launcher")
.setThumbnail(this, R.drawable.apps_actionlauncherpro)); // sets a thumbnail image from drawable resources
cardsAdapter.add(new Card("ADW", "Launcher")
.setThumbnail(this, R.drawable.apps_adwex)); // sets a thumbnail image from drawable resources
cardsAdapter.add(new Card("Apex", "Launcher")
.setThumbnail(this, R.drawable.apps_apexlauncher)); // sets a thumbnail image from drawable resources
cardsAdapter.add(new Card("Nova", "Launcher")
.setThumbnail(this, R.drawable.apps_novalauncher)); // sets a thumbnail image from drawable resources
CardListView cardsList = (CardListView) findViewById(R.id.cardsList);
cardsList.setAdapter(cardsAdapter);
final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
}
@Override
public void onMenuItemClick(Card card, MenuItem item) {
Toast.makeText(this, card.getTitle() + ": " + item.getTitle(), Toast.LENGTH_SHORT).show();
}
У меня есть это, чтобы установить вкладки, чтобы обеспечить 3, что я хочу
public class MyPagerAdapter extends FragmentPagerAdapter {
private final int[] TITLES = { R.string.tab1, R.string.tab2, R.string.tab3 };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
Locale l = Locale.getDefault();
switch (position) {
case 0:
return getString(R.string.tab1).toUpperCase(l);
case 1:
return getString(R.string.tab2).toUpperCase(l);
case 2:
return getString(R.string.tab3).toUpperCase(l);
}
return null;
}
@Override
public Fragment getItem(int position) {
Fragment f = new Fragment();
switch(position){
case 0:
f=ThemeCardFragment.newInstance(position);
break;
case 1:
f=ThemeCardFragment.newInstance(position);
break;
}
return f;
}
@Override
public int getCount() {
return TITLES.length;
}
я поместил следующее в моем фрагменте, который я уверен, что это неправильно.
public class ThemeCardFragment extends Fragment {
private static final String ARG_POSITION = "position";
private int position;
public static ThemeCardFragment newInstance(int position) {
ThemeCardFragment f = new ThemeCardFragment();
Bundle b = new Bundle();
b.putInt(ARG_POSITION, position);
f.setArguments(b);
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
position = getArguments().getInt(ARG_POSITION);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
FrameLayout fl = new FrameLayout(getActivity());
fl.setLayoutParams(params);
return fl;
}
}
Я попытался посмотреть на примеры на здесь, учебники и Android разработчика, но я что-то, что позволит мне сделать это без вести.
Реалистично Я хотел бы определить
("Action", "Launcher")
в CardsAdapter как строки из моего strings.xml
Любое понимание, чтобы указывать мне в правильном направлении будут оценены. Кажется, я продолжаю двигаться в неправильном направлении и провел не менее 10 часов, пытаясь понять это. Благодарю.
Я предполагаю, что это должно было быть помечено как «java», а не «javascript». – Pavlo