gpt4 book ai didi

android - 检查列表中每个项目的空值

转载 作者:行者123 更新时间:2023-11-30 00:54:28 25 4
gpt4 key购买 nike

我有新闻列表。每个新闻都有作者 ID,我需要从新闻中获取作者 ID,然后调用 Author 获取他的名字并将作者的名字设置为每个新闻。

看起来很简单,而且有效,但有些作者的名字是空的,应用程序抛出一个 exepcion。因此,如果作者姓名为空,我需要检查新闻列表中的每个项目,将其替换为“未知”字符串。我的变体不起作用。

   .flatMap(new Func1<News, Observable<News>>() {
@Override
public Observable<News> call(News news) {
return apiService.getAuthor(news.getId())
.doOnNext(new Action1<Author>() {
@Override
public void call(Author author) {

if (!author.getName().equals("null")) {
news.setAuthorName(author.getName());
} else {
news.setAuthorName("Unknown");
}
}
})
.observeOn(Schedulers.io())
.map(new Func1<Author, News>() {
@Override
public News call(Author author) {
return news;
}
})
.subscribeOn(Schedulers.newThread());
}
})

最佳答案

以下是一些常用的实用函数,可帮助您进行空值检查。将这些添加到 Utils 类或其他东西。另请注意,检查字符串空值与检查对象空值不同

private static final String EMPTY = "";
private static final String NULL = "null";

/**
* Method checks if String value is empty
*
* @param str
* @return string
*/
public static boolean isStringEmpty(String str) {
return str == null || str.length() == 0 || EMPTY.equals(str.trim()) || NULL.equals(str);
}

/**
* Method is used to check if objects are null
*
* @param objectToCheck
* @param <T>
* @return true if objectToCheck is null
*/
public static <T> boolean checkIfNull(T objectToCheck) {
return objectToCheck == null;
}

现在更新你的代码

.flatMap(new Func1<News, Observable<News>>() {
@Override
public Observable<News> call(News news) {
return apiService.getAuthor(news.getId())
.doOnNext(new Action1<Author>() {
@Override
public void call(Author author) {
// notice how I first confirm that the object is not null
// and then I check if the String value from the object is not null
if (!Utils.checkIfNull(author) && !Utils.isStringEmpty(author.getName()) {
news.setAuthorName(author.getName());
} else {
news.setAuthorName("Unknown");
}


}
})
.observeOn(Schedulers.io())
.map(new Func1<Author, News>() {
@Override
public News call(Author author) {
return news;
}
})
.subscribeOn(Schedulers.newThread());
}
})

您遇到问题的原因是因为您正在检查字符串文字,“null”不一定是字符串为 null。

关于android - 检查列表中每个项目的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40412943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com