【问题标题】:Boolean in Retrofit改造中的布尔值
【发布时间】:2019-12-04 07:00:18
【问题描述】:

我有这个具有布尔数据类型的 json 对象。我正在尝试查看或了解如何将我的布尔值设置为对我的改造建造者的回应。所以基本上我有这个“状态”,在我的 json 对象中表示真或假。我如何设置该状态并声明如果状态为真,则文本颜色将为绿色,否则为假。我仍然是这只熊的初学者。

【问题讨论】:

  • 你有什么错误吗?
  • 我说它无法解析方法 'settext'(boolean)
  • 你应该运行应用程序,有时 android studio 会出现这些类型的编辑器错误并查看 logcat。
  • 运行时出现同样的错误

标签: java android retrofit


【解决方案1】:

这是因为response.body().getSoftware()[i].status 是布尔类型。您不能在 setText 方法中使用布尔值作为输入参数 - 此方法的签名允许您传递 String 或 Int(string resource id)。 要达到您的目标,请尝试使用此变量设置文本颜色:

if (response.body().getSoftware()[i].status) {
   softwareStatus.setTextColor(Color.GREEN);
} else {
   softwareStatus.setTextColor(Color.RED);
}
softwareStatus.setText(response.body().getSoftware()[i].status.toString())
//or use softwareStatus.setText("" + response.body().getSoftware()[i].status) if status is primitive boolean and not object Boolean

另外,如果您的 XML 布局中没有设置一些文本,请不要忘记设置一些文本。

UPD(在一个彩色字符串中包含所有状态):

for (int i = 0; i < response.body().getSoftware(); i++) {
        String textToSet = "" + response.body().getSoftware()[i].status;
        Spannable spannable = new SpannableString(textToSet);
        ForegroundColorSpan fcs = new ForegroundColorSpan(response.body().getSoftware()[i].status ? Color.GREEN : Color.RED);
        spannable.setSpan(fcs, 0, textToSet.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        softwareStatus.append(spannable);
        softwareStatus.append("\n\n");
}

【讨论】:

  • 不,我的意思是我的状态是从我的 json 对象中设置的。基本上我需要该布尔类型来获得响应并根据软件的状态向我的文本视图显示该状态(例如真或假)并设置它们的文本颜色。
  • 这正是我所说的。如果您需要在response.body().getSoftware()[i].status 为true 的情况下使用绿色的状态文本“true”,在相反情况下使用红色的文本“false”,然后添加softwareStatus.setText(response.body().getSoftware()[i].status.toString())
  • 我想办法将文本设置为文本视图的真或假。还有一个问题。在softwareStatus.setText("" + response.body().getSoftware()[i].status) 这一行中,是否有机会将其全部显示而不是一一显示。
  • 对不起,我不明白。你有什么输入,你想看到什么输出?我可以假设,您想在附加的文本视图中显示所有状态?
  • 是的,这正是我想要在单个文本视图上显示所有状态的内容,就像我拥有的​​硬件和软件名称代码一样。
【解决方案2】:

it says it cannot resolve method 'settext'(boolean)

您收到此错误是因为您尝试将boolean 值参数传递给setText 方法,setText 的此类签名不存在,因此它给您此错误。你可以阅读setTexthere

如果您需要在 TextView 中显示真/假,您可以这样做,

setText(someBoolean + "");

或者如果您需要根据真/假显示其他内容,那么您应该检查 if 条件中的值,然后执行您需要的任何操作。

您似乎在此处收到此错误

softwareStatus.setText(response.body().getSoftware()[i].status);

你可以试试,

softwareStatus.setText(response.body().getSoftware()[i].status + "");

【讨论】:

  • 我只需要在我的文本视图中显示真/假,所以我使用了 setText(someBoolean + " ") 但 someboolean 给了我一个错误。它说它无法解析方法..
  • @YenBico 好的,很高兴它有帮助。在 StackOverflow 上,您应该将答案标记为已接受,如果它适合您,请点赞。如果其他访问者面临同样的问题,它可以帮助其他访问者了解对您有用的方法。
猜你喜欢
  • 1970-01-01
  • 2020-03-30
  • 2014-01-06
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2012-01-09
  • 1970-01-01
相关资源
最近更新 更多