Android – ViewPager使用PagerAdapter,instantiateItem時出現IndexOutOfBoundsException

來源:互聯網
上載者:User

     這個問題困擾我有一個禮拜了、今天終於解決之、     感謝:http://stackoverflow.com/questions/9402970/android-viewpager-throwing-indexoutofbounds-exception-when-setting-current-item     報錯資訊如下:

04-11 15:01:29.092: E/AndroidRuntime(607): FATAL EXCEPTION: main04-11 15:01:29.092: E/AndroidRuntime(607): java.lang.IndexOutOfBoundsException: index=3 count=204-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.addInArray(ViewGroup.java:2044)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.addViewInner(ViewGroup.java:1988)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.addView(ViewGroup.java:1865)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.support.v4.view.ViewPager.addView(ViewPager.java:920)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.addView(ViewGroup.java:1822)04-11 15:01:29.092: E/AndroidRuntime(607):      at com.ynet.ilive.views.BrowsePicturesView$Adapter.instantiateItem(BrowsePicturesView.java:272)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.support.v4.view.PagerAdapter.instantiateItem(PagerAdapter.java:110)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.support.v4.view.ViewPager.populate(ViewPager.java:783)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.support.v4.view.ViewPager.completeScroll(ViewPager.java:1280)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.support.v4.view.ViewPager.computeScroll(ViewPager.java:1176)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.drawChild(ViewGroup.java:1556)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.View.draw(View.java:6743)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.drawChild(ViewGroup.java:1640)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.View.draw(View.java:6743)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.widget.FrameLayout.draw(FrameLayout.java:352)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.drawChild(ViewGroup.java:1640)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.View.draw(View.java:6743)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.widget.FrameLayout.draw(FrameLayout.java:352)04-11 15:01:29.092: E/AndroidRuntime(607):      at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewRoot.draw(ViewRoot.java:1407)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewRoot.performTraversals(ViewRoot.java:1163)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.os.Handler.dispatchMessage(Handler.java:99)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.os.Looper.loop(Looper.java:123)04-11 15:01:29.092: E/AndroidRuntime(607):      at android.app.ActivityThread.main(ActivityThread.java:4627)04-11 15:01:29.092: E/AndroidRuntime(607):      at java.lang.reflect.Method.invokeNative(Native Method)04-11 15:01:29.092: E/AndroidRuntime(607):      at java.lang.reflect.Method.invoke(Method.java:521)04-11 15:01:29.092: E/AndroidRuntime(607):      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)04-11 15:01:29.092: E/AndroidRuntime(607):      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)04-11 15:01:29.092: E/AndroidRuntime(607):      at dalvik.system.NativeStart.main(Native Method)

PagerAdapter中instantiateItem的代碼如下:
@Override          public Object instantiateItem(View container, int position) {               Log.i(TAG, "instantiateItem: - position: " + position);               if (mDrawables.size() < position) {                    return null;               }               // 初始化               View view = mInflater.inflate(R.layout.browse_pics, null);               mImg = (ImageView) view.findViewById(R.id.browse_pics_img);               mIndicator = (TextView) view                         .findViewById(R.id.browse_pics_indicator);               mDigest = (TextView) view.findViewById(R.id.browse_pics_title);               StringBuilder pageIndicator = new StringBuilder();               pageIndicator.append(position + 1);               pageIndicator.append("/");               pageIndicator.append(mImgsCount);               mIndicator.setText(pageIndicator.toString());               if (null != mNews.getDigest() && !mNews.getDigest().equals("")) {                    mDigest.setText(mNews.getDigest());               } else {                    mDigest.setText(mNews.getTitle());               }               mImg.setImageDrawable(mDrawables.get(position));               Log.i(TAG, "mDrawables size: " + mDrawables.size() + ", position: "                         + position);               // 注意一定要填0,否則報錯:IndexOutOfBoundsException               // 詳細請看:http://stackoverflow.com/questions/9402970/android-viewpager-throwing-indexoutofbounds-exception-when-setting-current-item               ((ViewPager) container).addView(view, 0);               //((ViewPager) container).addView(view, position); 這樣會報錯,錯誤資訊如上所示               return view;          }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.