我看到以下代码,但我不知道它是什么意思。
public class FileListAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater mInflater ;
private ArrayList<FileNode> mFileList ;
private Map<Integer, Boolean> mSelectMap = new HashMap<Integer, Boolean>();
.
.
.
@Override
public int getCount() {
return mFileList == null ? 0 : mFileList.size() ;
}
@Override
public Object getItem(int position) {
return mFileList == null ? null : mFileList.get(position) ;
}
}
第一个问题
mFileList == null ? 0 : mFileList.size();
和mFileList == null ? null : mFileList.get(position);
是什么意思??
第二个问题
如果我想将上面的代码从类型对象修改为int,该怎么办?
这
@Override
public Object getItem(int position) {
return mFileList == null ? null : mFileList.get(position) ;
}
要
@Override
public Integer getItem(int position) {
return ???
//what should I return for?
}
有人可以帮助我回答这两个问题吗?
非常感谢。
答案 0 :(得分:2)
mFileList == null? 0:mFileList.size();和mFileList == null?空值 :mFileList.get(position);是Turnary运营商。这是link
如果你想以另一种方式这样做:
@Override
public Integer getItem(int position) {
if(mFileList == null)
return 0;
else
return mFileList.size();
}
答案 1 :(得分:2)
第一个问题:它是ternary operator,基本上是内联if-else。 foo ? bar : baz
首先评估foo
,如果该表达式的结果为true
,则使用bar
,否则使用baz
。
第二个问题,不要修改getItem
方法签名。它应该是这样的。 Java中的所有类都扩展Object
,因此您也可以返回Integer
。这种方法现在看起来很好,不需要修改它。
答案 2 :(得分:1)
return mFileList == null ? null : mFileList.get(position)
相当于:
if(mFileList == null)
return null;
else
return mFileList.get(position);