ViewPager显示重复数据 [英] ViewPager showing duplicate data

查看:141
本文介绍了ViewPager显示重复数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下问题,
第一viewpager显示错误的第二viewpager的内容
当我滑动到第二viewpager的内容是相同的,显示出正确的第二viewpager
解决这个问题的疑难问题有下滑到第三这样FragmentStatePagerAdapter可以重装
然后在第一的ViewPage的含量为正确显示

 包com.example.android.effectivenavigation;进口android.os.Bundle;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentActivity;
进口android.support.v4.app.FragmentManager;
进口android.support.v4.app.FragmentStatePagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.TextView;公共类MainActivity扩展FragmentActivity {
    静态INT myViewPagerItem;
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        MyPageAdapter mFragmentStatePagerAdapter =新MyPageAdapter(getSupportFragmentManager());
        的setContentView(R.layout.refuel_viewpager);
        ViewPager寻呼机=(ViewPager)findViewById(R.id.pager);
        pager.setAdapter(mFragmentStatePagerAdapter);
    }
    公共静态类MyPageAdapter扩展FragmentStatePagerAdapter {
        公共MyPageAdapter(FragmentManager FM){
            超(FM);
        }
        @覆盖
        公共片段的getItem(int i)以{
            myViewPagerItem = I;
            返回新ViewFragment();
        }
        @覆盖
        公众诠释的getCount(){
            返回10;
        }
    }
    公共静态类ViewFragment扩展片段{
        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            视图V = inflater.inflate(R.layout.view,集装箱,FALSE);
            TextView的文本1 =(TextView中)v.findViewById(R.id.text1);
            text1.setText(页面:+ myViewPagerItem);
            返回伏;
        }
    }}


解决方案

做这样

 公共类MainActivity扩展FragmentActivity {
    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        MyPageAdapter mFragmentStatePagerAdapter =新MyPageAdapter(getSupportFragmentManager());
        的setContentView(R.layout.refuel_viewpager);
        ViewPager寻呼机=(ViewPager)findViewById(R.id.pager);
        pager.setAdapter(mFragmentStatePagerAdapter);
    }
    公共类MyPageAdapter扩展FragmentStatePagerAdapter {
        公共MyPageAdapter(FragmentManager FM){
            超(FM);
        }
        公众诠释getItemPosition(Object对象){
            返回POSITION_NONE;
        }
        @覆盖
        公共片段的getItem(int i)以{
            返回新ViewFragment(ⅰ);
        }
        @覆盖
        公众诠释的getCount(){
            返回10;
        }
    }
    公共类ViewFragment扩展片段{
        INT帮您做生意;
        公共ViewFragment(INT帮您做生意){
            this.pageno =帮您做生意;
        }
        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
                                 捆绑savedInstanceState){
            super.onCreate(savedInstanceState);
            视图V = inflater.inflate(R.layout.view,集装箱,FALSE);
            TextView的文本1 =(TextView中)v.findViewById(R.id.text1);
            text1.setText(页面:+帮您做生意);
            返回伏;
        }
    }}

I am having the following problem, first viewpager show wrongly the content of the second viewpager when i slide to the second viewpager the content is the same,showing correctly the second viewpager to fix this problem.I have to slide to the third so FragmentStatePagerAdapter can reload then the content of the first viewpage is show correctly.

package com.example.android.effectivenavigation;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends FragmentActivity {
    static int myViewPagerItem;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyPageAdapter mFragmentStatePagerAdapter = new MyPageAdapter(getSupportFragmentManager());
        setContentView (R.layout.refuel_viewpager);
        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(mFragmentStatePagerAdapter);
    }
    public static class MyPageAdapter extends FragmentStatePagerAdapter {
        public MyPageAdapter(FragmentManager fm) {
            super(fm);
        }
        @Override
        public Fragment getItem(int i) {
            myViewPagerItem = i;
            return new ViewFragment();
        }
        @Override
        public int getCount() {
            return 10;
        }
    }
    public static class ViewFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            View v = inflater.inflate(R.layout.view, container, false);
            TextView text1 = (TextView) v.findViewById(R.id.text1);
            text1.setText("Page: " + myViewPagerItem);
            return v;
        }
    }

}

解决方案

Do this way

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyPageAdapter mFragmentStatePagerAdapter = new MyPageAdapter(getSupportFragmentManager());
        setContentView (R.layout.refuel_viewpager);
        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(mFragmentStatePagerAdapter);
    }
    public  class MyPageAdapter extends FragmentStatePagerAdapter {
        public MyPageAdapter(FragmentManager fm) {
            super(fm);
        }
        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }
        @Override
        public Fragment getItem(int i) {
            return new ViewFragment(i);
        }
        @Override
        public int getCount() {
            return 10;
        }
    }
    public  class ViewFragment extends Fragment {
        int pageno;
        public ViewFragment(int pageNo){
            this.pageno=pageNo;
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            View v = inflater.inflate(R.layout.view, container, false);
            TextView text1 = (TextView) v.findViewById(R.id.text1);
            text1.setText("Page: " + pageno);
            return v;
        }
    }

}

这篇关于ViewPager显示重复数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆