复选框值为true但不显示tick - Android / Java

时间:2017-05-30 05:40:53

标签: java android android-fragments checkbox

基本上我在三(3)个不同的片段中有三(3)个复选框列表。当我打开活动时,默认片段中的复选框显示为正常,但不同片段中的复选框显示不同。复选框的值仍然为true。下面是复选框的图像,使事情更清晰,也是我的代码。

第一个片段页面:

enter image description here

第二个片段页面:

enter image description here

设置复选框及其if condition

的代码
private void setCheckBox(ArrayList<DataPrefType> arrayList){
    for(int i = 0; i < arrayList.size(); i++){
        id = i + 1;
        checkBox = new CheckBox(getActivity());
        checkBox.setId(i + 1);
        checkBox.setText(arrayList.get(i).getName());
        checkBox.setPadding(10, 10, 10, 10);
        checkBox.setLayoutParams(params);
        checkBox.setGravity(Gravity.CENTER);
        checkBoxLayout.addView(checkBox);

        if(!userPreference.isEmpty() || userPreference != null){
            for(int j = 0; j < userPreference.get(0).getDataPrefTypeArrayList().size(); j++){
                int retrieveId = Integer.parseInt(userPreference.get(0).getDataPrefTypeArrayList().get(j).getId());
                if(checkBox.getId() == retrieveId)
                    checkBox.setChecked(true);
            }
        }

2 个答案:

答案 0 :(得分:0)

您可以覆盖片段的setUserVisibleHint()方法并加载其中的复选框。

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(isVisibleToUser)setCheckBox();
}

这只是一种解决方法,我不认为这是解决问题的最佳方法,但我还没有找到更好的方法。这可能导致Null指针异常。

答案 1 :(得分:0)

我创建了这个Kotlin extension property来解决这个问题(显然仅在您编写Kotlin代码而不是Java时有用)

/**
 * Set the state of a checkbox skipping animations.
 */

var CheckBox.checked: Boolean
    get() = isChecked
    set(value) {
        if(isChecked != value) {
            isChecked = value
            jumpDrawablesToCurrentState()
        }
    }

现在在我的代码中,我写的是checkbox_view.checked = true而不是checkbox_view.isChecked = true