【问题标题】:What does the null ? 0 and null ? null mean in android? [closed]什么是 null ? 0 和空? android中的null是什么意思? [关闭]
【发布时间】:2014-01-19 00:33:46
【问题描述】:

我看到了下面的代码,但我不知道它是什么意思。

    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); 是什么意思??

第二个问题

如果我想将上面的代码从 type object 修改为 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?
    }

有人可以帮我回答这两个问题吗?

谢谢你。

【问题讨论】:

  • 这是 if else 语句。如果mFileList == null 则返回null 否则返回mFileList.get(position)
  • android 不是编程语言。关键字 null 是一个 Java 关键字,不争论,我认为在学习 android 编程之前应该先学习 Java。

标签: java android arraylist baseadapter


【解决方案1】:

mFileList == null ? 0 : mFileList.size();和 mFileList == null ?空值 : mFileList.get(位置);是 Turnary 运算符。这是link

如果你想用另一种方式这样做:

@Override
public Integer getItem(int position) {
    if(mFileList == null)
       return 0;
    else
       return mFileList.size();

}

【讨论】:

    【解决方案2】:

    第一个问题:它是一个ternary operator,本质上是一个内联 if-else。 foo ? bar : baz 首先计算 foo,如果该表达式的结果是 true,则使用 bar,否则使用 baz

    第二个问题,不要修改getItem方法签名。预计会是这样。 Java 中的所有类都扩展了Object,因此您也可以返回Integers。方法好像你现在的样子不错,不用修改了。

    【讨论】:

      【解决方案3】:
      return mFileList == null ? null : mFileList.get(position)
      

      相当于:

      if(mFileList == null)  
          return  null;
      else
         return mFileList.get(position);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-10
        • 2022-01-23
        • 1970-01-01
        • 2013-05-09
        • 2013-08-05
        • 2017-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多