Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用三元运算符收缩表达式_Java_Android - Fatal编程技术网

Java 如何使用三元运算符收缩表达式

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);

我很想知道如何用ternator操作符将代码压缩成一行,想法是改变我的RecyclerView中图像的可绘制性,当它为1或0时,我已经这样做了,但我认为没有多个if-else来做,相反,我知道用三元操作符只需一行就可以完成

 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);