如何阻止元素影响viewpager中的其他元素?

时间:2014-11-11 13:11:48

标签: java android

我只是尝试连接一组切换按钮(在无线电组层次结构下)并根据计数器设置它们,根据您选择的按钮递增或递减。

我目前将其置于不使用片段的viewpager中。它只使用带有一些动态元素的常规视图。我使用pageradapter来浏览视图。

我认为我遇到的问题与使用viewpager和切换按钮组ID以及每个视图上的计数器id相同有关。那么,我认为每个视图上的元素都因此而相互影响?

下一个视图受计数器设置的上一个视图的值影响。因此,如果我在上一个视图中单击3,然后单击加号(起始值为零),它会跳转到4,因为在上一个视图中我选择了3.

所以,这就是我目前在片段中所拥有的内容,它主要起作用:

寻呼机活动中的内部课程

    private View.OnClickListener createClickListener(final int value, final int position) {
        return new View.OnClickListener()  {

            @Override
            public void onClick(View view) {

                buttonValue = value;
                counter = buttonValue;

                ToggleButton clickedButton = (ToggleButton) view;
                RadioGroup radioGroup= (RadioGroup) clickedButton.getParent();

                num.get(position).setText(Integer.toString(buttonValue));
                map.put(position, buttonValue);

               for (int i = 0; i < radioGroup.getChildCount(); ++i) {
                    View nextChild = radioGroup.getChildAt(i);
                    if (!(nextChild instanceof ToggleButton)) {
                        continue;
                    }
                    if (nextChild.getId() != clickedButton.getId() || !clickedButton.isChecked()) {
                        ToggleButton tb2 = (ToggleButton) nextChild;
                        tb2.setChecked(false);
                    }
                }
            }

        };
    }

    **Inside InstantiateItem() of viewPager:** 

    num.add(position, (TextView) view.findViewById(R.id.num));
    num.get(position).setText(Integer.toString(counter));

    final ImageView plus_button = (ImageView) view.findViewById(R.id.plus_sign);
                    final ImageView minus_button = (ImageView) view.findViewById(R.id.minus_sign);

                    final ViewGroup group = (ViewGroup) view.findViewById(R.id.toggleGroup);

                    for (int i = 0; i < group.getChildCount(); ++i) {
                        View child = group.getChildAt(i);
                        child.setOnClickListener(createClickListener(i, position));
                    }

       plus_button.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View view) {

                            if (plus_button.isPressed()) {

                                if ((counter <= 9) && (counter >= 0)) {

                                    counter++;
                                    num.get(position).setText(Integer.toString(counter));
                                    buttonValue = Integer.parseInt(num.get(position).getText().toString());
                                    for (int i = 0; i < group.getChildCount(); ++i) {
                                        View nextChild = group.getChildAt(i);
                                        ToggleButton tb2 = (ToggleButton) nextChild;
                                        if (i == buttonValue) {
                                            tb2.setChecked(true);
                                        } else {
                                            tb2.setChecked(false);
                                        }
                                    }
                                    System.out.println(num.get(position).getText().toString());
                                }
                            }
                        }
                    });

                    minus_button.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View view) {

                            if (minus_button.isPressed()) {

                                if ((counter <= 10) && (counter > 0)) {
                                    counter--;
                                    num.get(position).setText(Integer.toString(counter));
                                    buttonValue = Integer.parseInt(num.get(position).getText().toString());
                                    for (int i = 0; i < group.getChildCount(); ++i) {
                                        View nextChild = group.getChildAt(i);
                                        ToggleButton tb2 = (ToggleButton) nextChild;
                                        if (i == buttonValue) {
                                            tb2.setChecked(true);
                                        } else {
                                            tb2.setChecked(false);
                                        }
                                    }
                                    System.out.println(num.get(position).getText().toString());
                                }
                            }
                        }
                    });

1 个答案:

答案 0 :(得分:1)

在您创建TextView数组的活动中,您基本上会做类似的事情。创建一个整数数组,比如声明int [] counter = new {0,0,0,0,0,0,0,0,0,0}。然后,在您当前的代码中,对于counter上的所有操作,您只需在counter[position]上执行相同的操作。