我正在使用片段寻呼机适配器实例化我的片段类.我能够这样做但我的问题是我的getItem()方法被调用两次,这进一步产生了问题.你解释我为什么会发生这种情况.
package com.creatiosoft.RSSFeed.adaptor; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.util.Log; import com.creatiosoft.RSSFeed.utils.RSSItem; import com.viewpagerindicator.IconPagerAdapter; public class NewsFeedsAdapter extends FragmentPagerAdapter implements IconPagerAdapter { int[] icon = null; String[] content = null; String[] URLs = null; Context cont; public NewsFeedsAdapter(FragmentManager fm,Context context) { super(fm); Log.i("jk","constructor"); this.cont = context; RSSItem newsFeedAppliaction = (RSSItem) cont; /* * Retrieving the values of the Icons and contents from the application * class in utils package */ icon = newsFeedAppliaction.getICONS(); content = newsFeedAppliaction.getCONTENT(); URLs = newsFeedAppliaction.getURL(); } /** instantiate a new fragment class */ @Override public Fragment getItem(int position) { Log.i("yt","hello" + position); return TestFragment.newInstance(position % content.length,cont); } @Override public CharSequence getPageTitle(int position) { return content[position % content.length].toUpperCase(); } public int getIconResId(int index) { return icon[index]; } /** return the no of views on the basis of array items */ @Override public int getCount() { Log.i("hi","length" + content.length); return content.length; } }
我用这段代码调用Adapter:
NewsFeedsAdapter adapter = new NewsFeedsAdapter( getSupportFragmentManager(),getApplicationContext()); /** * get the id of the view pager declared in the xml resource and set the * adaptor on the view pager */ ViewPager pager = (ViewPager) findViewById(R.id.pager); pager.setAdapter(adapter); //pager.setCurrentItem(0); /** * Tab page indicator class is used to indicate the tabs and is accessed * from the library class */ TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator); indicator.setViewPager(pager);