Java 如何使用三元运算符收缩表达式
我很想知道如何用ternator操作符将代码压缩成一行,想法是改变我的RecyclerView中图像的可绘制性,当它为1或0时,我已经这样做了,但我认为没有多个if-else来做,相反,我知道用三元操作符只需一行就可以完成Java 如何使用三元运算符收缩表达式,java,android,Java,Android,我很想知道如何用ternator操作符将代码压缩成一行,想法是改变我的RecyclerView中图像的可绘制性,当它为1或0时,我已经这样做了,但我认为没有多个if-else来做,相反,我知道用三元操作符只需一行就可以完成 if(json.hasTime(mArrayList.get(mPosition))==1){ mHolder.imageEvent.setImageResource(R.drawable.ic_event_black_24dp);
if(json.hasTime(mArrayList.get(mPosition))==1){
mHolder.imageEvent.setImageResource(R.drawable.ic_event_black_24dp);
}else{
mHolder.imageEvent.setImageResource(R.drawable.ic_event_busy_black_24dp);
}
我想这样做:
(if 1 or 0 ? value 1 : value2 );
您始终可以将表达式从(1)转换为(2),如下所示 所以你的单行表达式可以写如下
mHolder.imageEvent.setImageResource(json.hasTime(mArrayList.get(mPosition))==1?R.drawable.ic_event_black_24dp:R.drawable.ic_event_busy_black_24dp);
像这样的
mHolder.imageEvent.setImageResource(json.hasTime(mArrayList.get(mPosition))==1?
R.drawable.ic_event_black_24dp : R.drawable.ic_event_busy_black_24dp)
试试这个:
mHolder.imageEvent.setImageResource(json.hasTime(mArrayList.get(mPosition))==1 ? R.drawable.ic_event_black_24dp : R.drawable.ic_event_busy_black_24dp);
试试这个:
json.tieneHora(mArrayList.get(mPosition))==1?mHolder.imageEvent.setImageResource(R.drawable.ic_event_black_24dp):mHolder.imageEvent.setImageResource(R.drawable.ic_event_busy_black_24dp);
你为什么要这样做?这样不必要的优化可能会带来严重的可维护性问题。对我来说,将操作缩减为一行更有效,因为我需要对更多的图像执行相同的操作,而不是像这样实现链接式if station。此代码不会编译,因为它不是一个语句。您必须具有分配才能使其有效。
json.tieneHora(mArrayList.get(mPosition))==1?mHolder.imageEvent.setImageResource(R.drawable.ic_event_black_24dp):mHolder.imageEvent.setImageResource(R.drawable.ic_event_busy_black_24dp);