我正在使用RadioGroup,当用户按下按钮上的一个时,正在调用数据库(更新数据)。我为RadioGroup设置了OnCheckedChangeListener:
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());
}
答案 0 :(得分:0)
我终于找到了解决这个问题的方法。在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);
}
});
}
});