在不进入 OnCheckedChangeListener 的情况下设置 RadioGroup 的初始状态
Set initial state on RadioGroup without entering OnCheckedChangeListener
我正在使用 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());
}
我终于找到了解决这个问题的方法。在 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);
}
});
}
});
我正在使用 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());
}
我终于找到了解决这个问题的方法。在 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);
}
});
}
});