使用选项卡从列表创建片段

罗密欧

在学习编码与现在之间经过了很长一段时间之后,我试图创建一个使用卡列表视图和选项卡的Android应用程序。

我希望能够在所有3个选项卡中都有卡片列表,但每个列表中都有一个不同的列表。现在我所做的一切,我在所有3个选项卡中都得到了相同的设置。我知道我做错了什么,但是在阅读了Fragments和Tabs之后,我不知道如何实现此目的。

我的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个小时来试图弄清楚。谢谢。

k

我建议为单独的内容制作单独的片段。

onCreateView()片段中方法膨胀布局,然后从那里初始化列表视图。从MainActivity中删除listview代码,并将其放入片段中。

至于您的ViewPager,请将其更改为如下所示:

@Override
        public Fragment getItem(int position) {
                Fragment f = new Fragment();
                switch(position){
                case 0:
                        f= new FragmentTheme();     
                        break;
                case 1:
                        f= new FragmentExtras();     
                        break;
                case 2:
                        f= new FragmentContact();     
                        break;
                }
                return f;
        }

希望这可以帮助。我已经修改了您的github存储库以反映这些更改。

如果解决了问题,请确保接受此答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在片段内创建选项卡布局

来自分类Dev

在片段上创建选项卡视图

来自分类Dev

使用指令创建导航选项卡?

来自分类Dev

使用foreach创建的HTML选项卡

来自分类Dev

使用片段选项卡主机时,选项卡不在底部

来自分类Dev

Android片段的选项卡式布局,重新选择选项卡3,列表视图消失

来自分类Dev

如何使用多个片段实现滑动选项卡导航

来自分类Dev

使用SystemBarTint时,我的片段被ActionBar选项卡覆盖

来自分类Dev

使用ViewPager更改片段选项卡的大小

来自分类Dev

在ViewPager的多个选项卡中使用单个片段

来自分类Dev

对ViewPager的多个选项卡布局使用单个片段类

来自分类Dev

使用ViewPager的ActionBar选项卡和多片段布局

来自分类Dev

使用选项卡时,Android片段会自行触发

来自分类Dev

使用ActionBar选项卡和嵌套片段进行导航

来自分类Dev

使用SystemBarTint时,我的片段被ActionBar选项卡覆盖

来自分类Dev

如何使用多个片段实现滑动选项卡导航

来自分类Dev

使用片段将图像添加到选项卡

来自分类Dev

为列表中的每个名称创建选项卡

来自分类Dev

使用Angular UI Bootstrap在动态创建的选项卡上设置活动选项卡

来自分类Dev

扩展片段的类中的选项卡

来自分类Dev

片段选项卡viewpager问题

来自分类Dev

扩展片段的类中的选项卡

来自分类Dev

从操作栏选项卡开始片段

来自分类Dev

填充listview片段选项卡android

来自分类Dev

在Android操作栏选项卡和选项卡侦听器中使用片段时发生ClassCastException

来自分类Dev

选项卡式片段活动会无缘无故地创建不必要的选项卡?

来自分类Dev

正确地使用FragmentPagerAdapter从父片段中调用片段选项卡中的函数

来自分类Dev

使用QTabWidget在Qt中创建选项卡

来自分类Dev

如何使用系统获取属性创建选项卡?

Related 相关文章

  1. 1

    在片段内创建选项卡布局

  2. 2

    在片段上创建选项卡视图

  3. 3

    使用指令创建导航选项卡?

  4. 4

    使用foreach创建的HTML选项卡

  5. 5

    使用片段选项卡主机时,选项卡不在底部

  6. 6

    Android片段的选项卡式布局,重新选择选项卡3,列表视图消失

  7. 7

    如何使用多个片段实现滑动选项卡导航

  8. 8

    使用SystemBarTint时,我的片段被ActionBar选项卡覆盖

  9. 9

    使用ViewPager更改片段选项卡的大小

  10. 10

    在ViewPager的多个选项卡中使用单个片段

  11. 11

    对ViewPager的多个选项卡布局使用单个片段类

  12. 12

    使用ViewPager的ActionBar选项卡和多片段布局

  13. 13

    使用选项卡时,Android片段会自行触发

  14. 14

    使用ActionBar选项卡和嵌套片段进行导航

  15. 15

    使用SystemBarTint时,我的片段被ActionBar选项卡覆盖

  16. 16

    如何使用多个片段实现滑动选项卡导航

  17. 17

    使用片段将图像添加到选项卡

  18. 18

    为列表中的每个名称创建选项卡

  19. 19

    使用Angular UI Bootstrap在动态创建的选项卡上设置活动选项卡

  20. 20

    扩展片段的类中的选项卡

  21. 21

    片段选项卡viewpager问题

  22. 22

    扩展片段的类中的选项卡

  23. 23

    从操作栏选项卡开始片段

  24. 24

    填充listview片段选项卡android

  25. 25

    在Android操作栏选项卡和选项卡侦听器中使用片段时发生ClassCastException

  26. 26

    选项卡式片段活动会无缘无故地创建不必要的选项卡?

  27. 27

    正确地使用FragmentPagerAdapter从父片段中调用片段选项卡中的函数

  28. 28

    使用QTabWidget在Qt中创建选项卡

  29. 29

    如何使用系统获取属性创建选项卡?

热门标签

归档