Я пытаюсь использовать RadioGroup как CircularPageIndicator. Проблема заключается в RadioGroup.OnCheckedChangeListener. Кажется, это называется само собой, когда вызывается onPageSelected. Однако я хочу, чтобы он работал наоборот, т. Е. Когда я выбираю radioButton, он должен изменить представление, основанное на расположении индекса Array. Однако кажется, что onCheckedChange никогда не вызывается, когда я меняю чек на переключателе, и поэтому onCheckedChange никогда не запускается.Радиогруппа как индикатор круговой страницы
public class MainActivity extends Activity implements RadioGroup.OnCheckedChangeListener, OnPageChangeListener {
ViewPager mImagePager;
ImagePagerAdapter mPagerAdapter;
RadioGroup mPageIndicator;
boolean swipeChange = false;
int[] mRadioButtonIds = new int[] { R.id.radio0, R.id.radio1, R.id.radio2, R.id.radio3, R.id.radio4 };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initComponents();
mPageIndicator.setOnCheckedChangeListener(this);
mImagePager.setAdapter(mPagerAdapter);
mImagePager.setOnPageChangeListener(this);
}
/**
*
*/
private void initComponents() {
mPageIndicator = (RadioGroup) findViewById(R.id.radioGroup1);
mImagePager = (ViewPager) findViewById(R.id.imgPager);
mPagerAdapter = new ImagePagerAdapter();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int pSelectedPagePosition) {
swipeChange = true;
mPageIndicator.check(mRadioButtonIds[pSelectedPagePosition]);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (!swipeChange) {
int itemPosition = Arrays.asList(mRadioButtonIds).indexOf(checkedId);
mImagePager.setCurrentItem(itemPosition, true);
swipeChange = false;
}
}
}
Примечание: Я не хочу использовать какие-либо третьей стороной кода/LIB для создания пользовательских Круговой Page Indicator.
Возможно, здесь любая ошибка. Есть ли причина, по которой RadioGroup не работает?