Установить начальное состояние для RadioGroup, не вводя OnCheckedChangeListener
Я использую RadioGroup, и когда пользователь нажимает на одну из кнопок, выполняется звонок в базу данных (обновление данных). Я установил OnCheckedChangeListener для RadioGroup:
viberPermissionView.getAppPermissions().setOnCheckedChangeListener(new
RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup,
int checkedRadioButtonId)
{
callService(App.VIBER, checkedRadioButtonId);
}
});
У меня есть проблема, когда я открываю приложение и устанавливаю состояние кнопок (какая из них выбрана), это то же самое, что нажатие на кнопку, и я звоню в базу данных и без необходимости обновляю данные. Я хочу избежать этого вызова базы данных, чтобы установить состояние, не входя в метод OnCheckedChangeListener. Вот часть того, как я в настоящее время устанавливаю начальное состояние:
private void createResourcePicker() {
resourcePicker.setSlideOnFling(false);
resourcePicker.setAdapter(new PermissionsAdapter(permissions));
resourcePicker.addScrollStateChangeListener(this);
resourcePicker.addOnItemChangedListener(this);
resourcePicker.scrollToPosition(1);
resourcePicker.setItemTransitionTimeMillis(10);
resourcePicker.setItemTransformer(new ScaleTransformer.Builder()
.setMinScale(0.8f)
.build());
}
1 ответ
Я наконец нашел способ решить эту проблему. В методе OnCheckedChanged я беру RadioButton и устанавливаю OnClickListener. В OnClickListener я устанавливаю функцию, которая должна выполняться, когда пользователь нажимает кнопку, и она не выполняется, когда состояние RadioGroup устанавливается динамически. Вот логика:
viberPermissionView.getAppPermissions().setOnCheckedChangeListener(
new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup,
int checkedRadioButtonId) {
final RadioButton checkedButton =
viberPermissionView.findViewById(checkedRadioButtonId);
checkedButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startService(checkedButton,
App.VIBER);
}
});
}
});