Android代码报错:isChecked()赋值行出现unexpected type错误
问题分析与解决:Android列表项点击状态赋值错误
错误原因
你遇到的unexpected type编译错误,核心问题其实是个很典型的Java基础误区:你试图给一个方法调用的结果赋值。
看这行出错的代码:
arrEmps.get(position).isChecked() = newState;
isChecked()是一个getter方法(也就是获取状态的方法),它的作用是返回当前的选中状态值,而不是用来接收赋值的变量。Java语法里,只有变量或者有对应的setter方法的属性才能接收赋值,直接给方法返回值赋值完全不符合语法逻辑,这就导致了编译报错。
修正方案
你需要用对应的setter方法来设置选中状态,通常和isChecked()配套的setter方法是setChecked(boolean)。把错误行替换成下面的代码就可以解决问题:
arrEmps.get(position).setChecked(newState);
完整修正后的代码
holder.box.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean newState = !arrEmps.get(position).isChecked(); arrEmps.get(position).setChecked(newState); // 修正后的状态赋值代码 Toast.makeText( mContext.getApplicationContext(), arrEmps.get(position).getName() + " check " + newState, Toast.LENGTH_LONG ).show(); } });
小提醒
以后再遇到类似的编译错误,可以先检查是不是混淆了getter和setter的作用:getter方法(一般以get或is开头)是用来获取属性值的,要设置属性值必须用对应的setter方法(一般以set开头)哦。
内容的提问来源于stack exchange,提问作者kara
相关产品推荐
相关产品推荐

