有一个来自FrameLayout的视图,它只包含ViewPager
public final class PagerPieChart extends FrameLayout {
private ViewPager viewPager;
public PagerPieChart(@NonNull Context context) {
this(context, null);
}
public PagerPieChart(@NonNull Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public PagerPieChart(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
super(context, attrs, defStyleAttr);
View root = inflate(getContext(), R.layout.widget_pager_pie_chart, null);
viewPager = (ViewPager) root.findViewById(R.id.view_pager);
}
public void setValues(FragmentManager fragmentManager, String[] values) {
viewPager.setAdapter(new Adapter(fragmentManager, values));
}
private class Adapter extends FragmentStatePagerAdapter {
private String[] values;
public Adapter(FragmentManager fm, String[] values) {
super(fm);
this.values = values;
}
@Override
public Fragment getItem(int position) {
return ValueFragment.getInstance(values[position]);
}
@Override
public int getCount() {
return values.length;
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
public static class ValueFragment extends Fragment {
private String value;
private static ValueFragment getInstance(String value) {
ValueFragment fragment = new ValueFragment();
fragment.value = value;
return fragment;
}
public ValueFragment() {
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return new TextView(getContext());
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
((TextView) view).setText(value);
}
}
}
我将此视图初始化为
pagerPieChart.setValues(getChildFragmentManager(), new String[] {"12", "34", "56"});
调用Adapter的方法getCount,返回3,但不调用方法getItem()。请帮助我,我不正确?