(Swipe Views) 如何在运行时为 ViewPager 动态制作 Fragment 对象?

阿里

想法:在我的应用程序中,它有 15 节课,每节课包含 30 对用户可以刷过的对联。每个 fragment/couplet_page 都膨胀了一个包含 3 个文本视图的布局。我正在使用 FragmentStatePagerAdapter。

我了解到使用 switch case 语句来创建滑动视图,但问题是,有很多片段要创建,我知道有一个我不知道的更好的解决方案。我只想使用一个片段并以某种方式使用 setText 方法更改文本。

这是我的一个片段对象代码

import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class CoupletOneFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.couplet_one, container, false);
    }
}

这是自定义寻呼机适配器

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;


public class MyFragmentAdapter extends FragmentStatePagerAdapter {

    public MyFragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
       switch (position) {
           case 0:
               return new CoupletOneFragment();
           case 1:
               return new CoupletTwoFragment();
           case 2:
               return new CoupletThreeFragment();
           case 3:
               return new CoupletFourFragment();
           case 4:
               return new CoupletFiveFragment();
and so on...
           default:
               break;
       }
       return null;
    }

    @Override
    public int getCount() {return 30;}
}
阿里

好吧,我要在这里回答我自己的问题

更新片段对象代码

public class FragmentChild extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    // INFLATE THE LAYOUT THAT EACH FRAGMENT OBJECT WILL HAVE, PUT IT IN A VIEW
     View root = inflater.inflate(R.layout.couplets, container, false);

    // RECEIVE THE BUNDLE DATA SENT (ARGUMENTS)
    Bundle args = getArguments();

    // CREATE AN ARRAY LIST OF STRINGS THAT WILL HOLD TEXT
    ArrayList<String> someText = new ArrayList<>();
someText.add("one");
someText.add("two");
someText.add("three");
TextView txt = (TextView) root.findViewById(R.id.text_view);
    txt.setText(someText.get(args.getInt("position")));
return root;
}

更新的自定义寻呼机适配器

class MyFragmentAdapter extends FragmentStatePagerAdapter {

 MyFragmentAdapter(FragmentManager fm) {super(fm);}

@Override
public Fragment getItem(int position) {
    Bundle args = new Bundle();
    args.putInt("position", position);

    Fragment fragment = new FragmentChild();
    fragment.setArguments(args);
    return fragment;
}

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

最后主持活动

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

    // FIND THE VIEWPAGER AND SET THE CUSTOM ADAPTER TO IT TO PROVIDE CHILD PAGES
        ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        MyFragmentAdapter adapter = new MyFragmentAdapter(getSupportFragmentManager());
        viewPager.setAdapter(adapter);
    }
}

这很容易!

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时动态增加任何结构对象的大小?

来自分类Dev

如何在Java运行时动态创建对象

来自分类Dev

如何在JavaScript中制作动态对象?

来自分类Dev

如何在JavaScript中制作动态对象?

来自分类Dev

如何在运行时获取对象类型?

来自分类Dev

如何在运行时动态关注输入元素

来自分类Dev

如何在运行时动态修改proc主体?

来自分类Dev

如何在运行时动态设置OmniAuth范围?

来自分类Dev

如何在运行时动态创建Predicate <T>

来自分类Dev

如何在运行时动态关注输入元素

来自分类Dev

如何在运行时动态连接到DataSources?

来自分类Dev

程序运行时如何制作新对象(Python,pygame)

来自分类Dev

如何在 ViewPager 中渲染单个 Fragment?

来自分类Dev

制作动态表格,在运行时添加字段

来自分类Dev

在果园中在运行时使用我的一些命令来制作对象

来自分类Dev

动态制作对象

来自分类Dev

对象属性的运行时动态

来自分类Dev

在运行时从动态加载的dll创建对象列表

来自分类Dev

动态对象强制转换为仅在运行时已知的类型

来自分类Dev

动态平面C#对象类在运行时的属性列表

来自分类Dev

如何使用Viewpager和Fragment分割窗口?

来自分类Dev

如何使用PagerAdapter替换ViewPager中的Fragment?

来自分类Dev

在C#中使用ExpandoObject在运行时使用数据动态创建带有动态子对象的对象

来自分类Dev

如何选择在运行时为JSON对象序列化的属性?

来自分类Dev

如何从C#中的代码动态制作JSON对象

来自分类常见问题

如何在运行时使用LambdaMetaFactory创建代理对象?

来自分类Dev

如何在运行时使用反射从类的对象获取属性的值

来自分类Dev

如何在运行时在Autofac中定义嵌套对象的值

来自分类Dev

如何在运行时查找SAPUI5元素的对象类型

Related 相关文章

  1. 1

    如何在运行时动态增加任何结构对象的大小?

  2. 2

    如何在Java运行时动态创建对象

  3. 3

    如何在JavaScript中制作动态对象?

  4. 4

    如何在JavaScript中制作动态对象?

  5. 5

    如何在运行时获取对象类型?

  6. 6

    如何在运行时动态关注输入元素

  7. 7

    如何在运行时动态修改proc主体?

  8. 8

    如何在运行时动态设置OmniAuth范围?

  9. 9

    如何在运行时动态创建Predicate <T>

  10. 10

    如何在运行时动态关注输入元素

  11. 11

    如何在运行时动态连接到DataSources?

  12. 12

    程序运行时如何制作新对象(Python,pygame)

  13. 13

    如何在 ViewPager 中渲染单个 Fragment?

  14. 14

    制作动态表格,在运行时添加字段

  15. 15

    在果园中在运行时使用我的一些命令来制作对象

  16. 16

    动态制作对象

  17. 17

    对象属性的运行时动态

  18. 18

    在运行时从动态加载的dll创建对象列表

  19. 19

    动态对象强制转换为仅在运行时已知的类型

  20. 20

    动态平面C#对象类在运行时的属性列表

  21. 21

    如何使用Viewpager和Fragment分割窗口?

  22. 22

    如何使用PagerAdapter替换ViewPager中的Fragment?

  23. 23

    在C#中使用ExpandoObject在运行时使用数据动态创建带有动态子对象的对象

  24. 24

    如何选择在运行时为JSON对象序列化的属性?

  25. 25

    如何从C#中的代码动态制作JSON对象

  26. 26

    如何在运行时使用LambdaMetaFactory创建代理对象?

  27. 27

    如何在运行时使用反射从类的对象获取属性的值

  28. 28

    如何在运行时在Autofac中定义嵌套对象的值

  29. 29

    如何在运行时查找SAPUI5元素的对象类型

热门标签

归档