我只能使用 ViewPager 向后翻页,不能向前翻页。
我正在写一个横幅,但我只能使用 ViewPager 向后翻页,不能向前翻页。
这是我写的适配器。
class MyPagerAdapter extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
int p = position % mImgRes.length;
container.addView(mListView.get(p));
return mListView.get(p);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return 100;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return (view == object);
}
}
这是一条错误消息。
07-29 20:45:02.098 20791-20791/com.example.myfirstpro E/AndroidRuntime: 致命例外:主要 进程:com.example.myfirstpro,PID:20791 java.lang.IllegalStateException:指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()。 在 android.view.ViewGroup.addViewInner(ViewGroup.java:4465) 在 android.view.ViewGroup.addView(ViewGroup.java:4301) 在 android.support.v4.view.ViewPager.addView(ViewPager.java:1505) 在 android.view.ViewGroup.addView(ViewGroup.java:4242) 在 android.view.ViewGroup.addView(ViewGroup.java:4215) 在 com.example.myfirstpro.MainFragment$MyPagerAdapter.instantiateItem(MainFragment.java:62) 在 android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1034) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1216) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1116) 在 android.support.v4.view.ViewPager$3.run(ViewPager.java:273) 在 android.view.Choreographer$CallbackRecord.run(Choreographer.java:892) 在 android.view.Choreographer.doCallbacks(Choreographer.java:704) 在 android.view.Choreographer.doFrame(Choreographer.java:637) 在 android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:878) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5628) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)
当我前滚时程序会崩溃。
这是除了适配器以外的代码。@Hong Duan
private ViewPager mVpScroll;
private int mImgRes[] = new int[] {
R.drawable.banner01,
R.drawable.banner02,
R.drawable.banner03
};
private List<View> mListView = new ArrayList<>();
private LayoutInflater mInfalte;
public MainFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
for (int i = 0; i < mImgRes.length; i++) {
View inflate = inflater.inflate(R.layout.fragment_main_scroll_item, null);
ImageView ivBanner = (ImageView) inflate.findViewById(R.id.iv_scroll);
ivBanner.setImageResource(mImgRes[i]);
mListView.add(inflate);
}
mInfalte = inflater;
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
mVpScroll = (ViewPager) view.findViewById(R.id.vp_scroll);
mVpScroll.setAdapter(new MyPagerAdapter());
}