【发布时间】:2017-01-25 13:54:41
【问题描述】:
我有一个 recyclerview,旨在显示交易,但按日期分隔。但是我的 getItemViewType 似乎不起作用。这是代码:
@Override
public int getItemViewType(int position) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
if (mCompareDate == null || !fmt.format(mTransactions.get(mTransactionPosition).getTime()).equals(fmt.format(mCompareDate))) {
mCompareDate = mTransactions.get(mTransactionPosition).getTime();
return 2;
} else {
return 1;
}
}
我有一个检查值的 if 语句,但是当我运行它时,它会崩溃。我之前没有“else if”语句,但我希望它能帮助崩溃,else 语句应该可以正常工作。
不管怎样,我调试它并一步一步地观察它,程序似乎发现第一个语句是正确的,然后它会在语句中执行所有操作,包括“return 2;”但是之后它只是跳过返回 0,这会导致崩溃,如果我没有 else if 那么它会直接跳到 else 语句并返回 1,也会导致它崩溃。
编辑:修复了 else if 语句的混淆问题。
进一步编辑:因为混乱没有解决,这里是我的意思的 gif https://gyazo.com/06d2de58e7c170f0cbbf1a4e58be7ca3
【问题讨论】:
-
您需要发布堆栈跟踪或更多代码,这很好。
-
你需要检查 if (mTransactions == null) 和 if (mTransactions.get(mTransactionPosition) == null)
-
@DominiqueLorre 我看着调试器通过它,这些陈述都不是真的。它从字面上读取 if 语句是正确的,然后转到 return 2 行,然后继续到 else 并返回该值。
-
你能澄清“它崩溃了”吗?
-
嗯,它会崩溃,该语句由于某种原因返回了不正确的值,这使得程序稍后崩溃,但是该语句根本不应该返回错误的值,正如它在我的 gif 中显示的那样。
标签: java android if-statement return