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

时间:2018-10-24 15:33:28

标签: java android

我很想知道如何使用ternator运算符将此代码缩小为1行,其想法是在RecyclerView的1或0时更改图像的可绘制性,我已经做到了,但是我认为不是那样可以有多个其他方法来执行此操作,相反,我知道可以使用三元运算符仅在一行中完成它。

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

4 个答案:

答案 0 :(得分:3)

尝试一下:

 mHolder.imageEvent.setImageResource(json.hasTime(mArrayList.get(mPosition))==1 ? R.drawable.ic_event_black_24dp : R.drawable.ic_event_busy_black_24dp);

答案 1 :(得分:2)

您总是可以像这样将表达式从(1)转换为(2),

//(1)
if(condition){
    stmt1;
}else{
    stmt2;
}

//(2)
somevariable = condition?stmt1:stmt2;

因此您的单行表达式可以编写如下,

mHolder.imageEvent.setImageResource(json.hasTime(mArrayList.get(mPosition))==1?R.drawable.ic_event_black_24dp:R.drawable.ic_event_busy_black_24dp);

答案 2 :(得分:1)

这样的事情。

cookies.signed[:cookie_name] = {
  value: payload,
  domain: ['.socket.example.com', '.example.com']
  # Some people have to specify tld_length, but I was fine without it
}

答案 3 :(得分:0)

尝试一下:

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