Android 如果是viewpager,则复选框以片段形式滞后

Android 如果是viewpager,则复选框以片段形式滞后,android,android-viewpager,fragment,Android,Android Viewpager,Fragment,我有一个viewpager,其中我正在膨胀片段(所有片段都有相同的布局),每个片段在xml中都有一个复选框。但是当我滑动到下一个片段时,复选框显示checked。我需要使用viewpager来显示一个甚至复杂的布局,其中复选框作为片段的标题,回收器视图作为片段的主体。但所有这些都是滞后的。 下面是我的示例代码(只是一个示例,如果解决了这个问题,我可以跳到我的原始任务上)。 任何帮助都将不胜感激 1。主要活动 2。MyFragment 为什么在这里使用setTag()getTag()?你有复选框数

我有一个viewpager,其中我正在膨胀片段(所有片段都有相同的布局),每个片段在xml中都有一个复选框。但是当我滑动到下一个片段时,复选框显示checked。我需要使用viewpager来显示一个甚至复杂的布局,其中复选框作为片段的标题,回收器视图作为片段的主体。但所有这些都是滞后的。 下面是我的示例代码(只是一个示例,如果解决了这个问题,我可以跳到我的原始任务上)。 任何帮助都将不胜感激

1。主要活动

2。MyFragment


为什么在这里使用setTag()getTag()?你有复选框数组吗?@BhavikMehta。添加或删除setTag()无助于满足我的要求。这是一位同事提出的。看,你的问题有很多相关的东西,你的代码非常简单,但对我来说,有几个问题,比如,你想保持复选框状态不变,即使片段被刷过?你的offscreenpagelimit在这里扮演了一个重要角色,让我们聊聊,这样我可以帮你做这件事是的,我想保持复选框的状态不变。如果选中,则选中;如果未选中,则未选中。。。。如果你想知道的话。我想保存复选框状态。我需要的是,当我选中复选框时,复选框应该是可见的。但当我刷到下一页或上一页时,它会被检查。为什么在这里使用setTag()getTag()?你有复选框数组吗?@BhavikMehta。添加或删除setTag()无助于满足我的要求。这是一位同事提出的。看,你的问题有很多相关的东西,你的代码非常简单,但对我来说,有几个问题,比如,你想保持复选框状态不变,即使片段被刷过?你的offscreenpagelimit在这里扮演了一个重要角色,让我们聊聊,这样我可以帮你做这件事是的,我想保持复选框的状态不变。如果选中,则选中;如果未选中,则未选中。。。。如果你想知道的话。我想保存复选框状态。我需要的是,当我选中复选框时,复选框应该是可见的。但当我刷到下一页或上一页时,它会被检查。
public class MainActivity extends FragmentActivity{

    public final static int PAGES = 5;
    // You can choose a bigger number for LOOPS, but you know, nobody will fling
    // more than 1000 times just in order to test your "infinite" ViewPager :D
    public final static int LOOPS = 1000;
    public final static int FIRST_PAGE = PAGES * LOOPS / 2;

    public MyPagerAdapter adapter;
    public ViewPager pager;
    MyFragment fragment;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        pager = (ViewPager) findViewById(R.id.myviewpager);



        adapter = new MyPagerAdapter(this, this.getSupportFragmentManager());
        pager.setAdapter(adapter);
        pager.setPageTransformer(false, adapter);

        // Set current item to the middle page so we can fling to both
        // directions left and right
        pager.setCurrentItem(FIRST_PAGE);

        // Necessary or the pager will only have one extra page to show
        // make this at least however many pages you can see
        pager.setOffscreenPageLimit(3);

        // Set margin for pages as a negative number, so a part of next and
        // previous pages will be showed
        pager.setPageMargin(-30);
    }


}
public class MyFragment extends Fragment {
    CheckBox checkBox;


    public static Fragment newInstance(MainActivity context, int pos, float scale) {
        Bundle b = new Bundle();
        b.putInt("pos", pos);
        b.putFloat("scale", scale);
        return Fragment.instantiate(context, MyFragment.class.getName(), b);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (container == null) {
            return null;
        }

        View view = inflater.inflate(R.layout.mf, container, false);

        final int pos = this.getArguments().getInt("pos");
        TextView tv = (TextView) view.findViewById(R.id.text);
        checkBox = (CheckBox) view.findViewById(R.id.checkbox);
        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("Jobi", "checkbox clicked");
                if (checkBox.isSelected() == true) {
                    checkBox.setTag(view.getTag(pos));
                    checkBox.setSelected(false);
                } else {
                    checkBox.setTag(view.getTag(pos));
                    checkBox.setSelected(true);

                }
            }
        });
        tv.setText("Position = " + pos);
        RelativeLayout relative_layout = (RelativeLayout) view.findViewById(R.id.relative_layout);
        relative_layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d("Jobi", " At Position " + pos);
            }
        });

        MyLinearLayout root = (MyLinearLayout) view.findViewById(R.id.root);
        float scale = this.getArguments().getFloat("scale");
        root.setScaleBoth(scale);

        return view;
    }
}