Android: viewpage.ChildCount给我错误的计数

本文关键字:错误 viewpage ChildCount Android | 更新日期: 2023-09-27 18:05:04

我刚刚创建了ViewPager与PagerAdapter,我把它里面3个项目,但当我运行程序ViewPager。ChildCount给我2个?当我滚动到第二个视图时,适配器添加第三个项目并给我3个计数,但当我滚动到最后一个视图(3)时,它给我2个计数,但此时最后2个项目!!在我的代码中,我试图在布局内的textView中显示位置它在第一次滚动中给我正确的数字,然后它开始随机混合位置我不知道为什么??请帮助

我正在使用Xamarin这是我的代码

public class SlidingTabsFragment : Fragment
    {
        private SlidingTabScrollView mSlidingTabScrollView;
        private ViewPager mViewPager;
        protected static View CurrentView;
        protected static int CurrentViewPosition;
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            return inflater.Inflate(Resource.Layout.fragment_sample, container, false);
        }
        public override void OnViewCreated(View view, Bundle savedInstanceState)
        {
            mSlidingTabScrollView = view.FindViewById<SlidingTabScrollView>(Resource.Id.sliding_tabs);
            mViewPager = view.FindViewById<ViewPager>(Resource.Id.viewpager);
            mViewPager.Adapter = new SamplePagerAdapter();
            mViewPager.PageSelected += MViewPager_PageSelected;
            mViewPager.PageScrolled += MViewPager_PageScrolled;
            mSlidingTabScrollView.ViewPager = mViewPager;
        }
        private void MViewPager_PageScrolled(object sender, ViewPager.PageScrolledEventArgs e)
        {
            if (e.Position < mViewPager.ChildCount && e.Position>=0)
            {
                SamplePagerAdapter ad = (SamplePagerAdapter)mViewPager.Adapter;
                TextView txtTitle = mViewPager.GetChildAt(e.Position).FindViewById<TextView>(Resource.Id.item_title);
                int pos = ad.GetItemPosition(CurrentView);
                txtTitle.Text = e.Position.ToString();
            }
        }
        private void MViewPager_PageSelected(object sender, ViewPager.PageSelectedEventArgs e)
        {
            if (e.Position < mViewPager.ChildCount && e.Position >= 0)
            {
                SamplePagerAdapter ad = (SamplePagerAdapter)mViewPager.Adapter;

                TextView txtTitle = mViewPager.GetChildAt(e.Position).FindViewById<TextView>(Resource.Id.item_title);
                txtTitle.Text = e.Position.ToString();
            }
        }

        public class SamplePagerAdapter : PagerAdapter
        {
            List<string> items = new List<string>();
            public override void SetPrimaryItem(ViewGroup container, int position, Java.Lang.Object obj)
            {
                CurrentView = (View)obj;
                CurrentViewPosition = position;
            }
            public SamplePagerAdapter() : base()
            {
                items.Add("Home");
                items.Add("Sell");
                items.Add("Rent");
            }
            public override int Count
            {
                get { return items.Count; }
            }
            public override bool IsViewFromObject(View view, Java.Lang.Object obj)
            {
                return view == obj;
            }
            public override Java.Lang.Object InstantiateItem(ViewGroup container, int position)
            {
                View view = LayoutInflater.From(container.Context).Inflate(Resource.Layout.pager_item, container, false);
                container.AddView(view);

                return view;
            }
            public string GetHeaderTitle (int position)
            {
                return items[position];
            }
            public override void DestroyItem(ViewGroup container, int position, Java.Lang.Object obj)
            {
                container.RemoveView((View)obj);
            }
        }

Android: viewpage.ChildCount给我错误的计数

我解决了这个问题,这是因为我必须设置OffScreenLimit属性