Android recyclerview适配器中带有if条件的方法中缺少返回语句

Android recyclerview适配器中带有if条件的方法中缺少返回语句,android,android-recyclerview,Android,Android Recyclerview,我真的不知道为什么我在这个方法中因为没有返回任何值而出错。它是关于RecyclerView.Adapter中的方法getItemViewType()。我在检查里面是否有状况 @Override @ViewType public int getItemViewType(int position) { if (!mResults.isEmpty()) { if (position < mResults.size()) { if (itemList

我真的不知道为什么我在这个方法中因为没有返回任何值而出错。它是关于
RecyclerView.Adapter
中的方法
getItemViewType()。我在检查里面是否有状况

@Override
@ViewType
public int getItemViewType(int position) {
    if (!mResults.isEmpty()) {
        if (position < mResults.size()) {
            if (itemList.get(position) instanceof Categorizable) {
                return TYPE_ITEM;
            } else if (itemList.get(position) instanceof SectionHeader) {
                return TYPE_SECTION_HEADER;
            }
        } else {
            return FOOTER;
        }
    } else {
        if (mFilterOption == Filter.COMPLETE ||
                mFilterOption == Filter.INCOMPLETE) {
            if (position == 0) {
                return NO_ITEM;
            } else {
                return FOOTER;
            }
        } else {
            if (itemList.get(position) instanceof Categorizable) {
                return TYPE_ITEM;
            } else {
                return TYPE_SECTION_HEADER;
            }
        }
    }
}
@覆盖
@视图类型
public int getItemViewType(int位置){
如果(!mResults.isEmpty()){
如果(位置
我想我明白了,你的一个条件没有涵盖在内。查看第一个
if
,然后查看我添加
return 1的位置,如果返回语句进入其中但不满足上述两个条件中的任何一个,则缺少返回语句:

if (!mResults.isEmpty()) {
        if (position < mResults.size()) {
            if (itemList.get(position) instanceof Categorizable) {
                return TYPE_ITEM;
            } else if (itemList.get(position) instanceof SectionHeader) {
                return TYPE_SECTION_HEADER;
            }
            return 1; // adding this will fix it
        } else {
            return FOOTER;
        }
    } else {
        if (mFilterOption == Filter.COMPLETE ||
                mFilterOption == Filter.INCOMPLETE) {
            if (position == 0) {
                return NO_ITEM;
            } else {
                return FOOTER;
            }
        } else {
            if (itemList.get(position) instanceof Categorizable) {
                return TYPE_ITEM;
            } else {
                return TYPE_SECTION_HEADER;
            }
        }
    }
并将其与此进行比较(只是为了得到想法):


因此,第二个可能更具可读性,它也做了同样的事情。如果满足了
If
条件,它将返回
a
。如果没有,则不需要
否则
,它已过时。也许删除代码中的一些
else
s可以使代码更清晰易读。

在最后一行之前添加一个返回值。

只需在方法的最后一行添加return NO_项即可。这不是问题,请查看我的答案。实际上,我在Android studio中粘贴了代码,并设法将其修复@绿苹果!以后会开始用的,没问题,兄弟。享受编码的乐趣。我是内基,加上我是药剂师:德鲁兹,萨莫·扎科吉,他是一名医生,他是一名医生D
if (a > b) return a;
else return b;
if (a > b) return a;
return b;