我只是尝试连接一组切换按钮(在无线电组层次结构下)并根据计数器设置它们,根据您选择的按钮递增或递减。
我目前将其置于不使用片段的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());
}
}
}
});
答案 0 :(得分:1)
在您创建TextView
数组的活动中,您基本上会做类似的事情。创建一个整数数组,比如声明int [] counter = new {0,0,0,0,0,0,0,0,0,0}
。然后,在您当前的代码中,对于counter
上的所有操作,您只需在counter[position]
上执行相同的操作。