布局宽度更改后复选框丢失检查

时间:2018-03-04 01:55:56

标签: android

在隐藏一些视图后,我的布局宽度发生变化后,我遇到了复选框丢失状态的问题。见图片

不隐藏其他团队:

Without hiding the other team

隐藏后失去状态:

Losing state after hiding

我使用linearlayout的重量来自动调整布局的宽度,但它会丢失我的复选框的状态。 我已经尝试在隐藏视图后手动重新设置它,但它似乎不起作用。

if (id == R.id.home_lv) mView.hideGuestTeamList();
else mView.hideHomeTeamList();

cbSelector.setChecked(true);

问题:如何在拉伸视野后保留状态?

任何帮助都将受到高度赞赏。感谢

编辑:我的适配器没有逻辑操作。视图处理程序位于我的片段将调用的函数内。

public void setListClickListener(ListView listView) {
    final int id = listView.getId();

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            CheckBox cbSelector = view.findViewById(R.id.player_name);

            if(mSelectedItemCount < 5 || cbSelector.isChecked()) {
                cbSelector.setChecked(!cbSelector.isChecked());

                if (cbSelector.isChecked()) mSelectedItemCount++;
                else mSelectedItemCount--;

                mView.hideProceedButton();

                switch (mSelectedItemCount) {
                    case 0:
                        mView.showHomeTeamList();
                        mView.showGuestTeamList();
                        break;
                    case 1:
                        if (id == R.id.home_lv) mView.hideGuestTeamList();
                        else mView.hideHomeTeamList();

                        cbSelector.setChecked(true);
                        break;
                    case 5:
                        mView.showProceedButton();
                        break;
                }
            }else{
                mView.showLimitMessage();
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

所以问题出在我的适配器上。我所做的只是检查我的视图并返回它,如果它不是空的。

public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    if(convertView == null) {
        convertView = LayoutInflater.from(mContext).inflate(layoutId, parent, false);

        if (layoutId == R.layout.team_list_item) {
            CircleImageView civ = convertView.findViewById(R.id.player_image);
            CheckBox name = convertView.findViewById(R.id.player_name);

            name.setText(players.get(position).getName());
        }
    }

    return convertView;
}