想法:在我的应用程序中,它有 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] 删除。
我来说两句