在RadioGroup上设置初始状态而不输入OnCheckedChangeListener

时间:2018-02-23 14:21:55

标签: android radio-group

我正在使用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());
}

1 个答案:

答案 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);
                        }
                    });
                }
            });