禁用基于Retrofit响应的按钮
我想检查来自服务器的布尔值。如果布尔值为true,我想禁用按钮单击。否则,可以点击按钮。我使用Retrofit将所有数据从服务器添加到其余。禁用基于Retrofit响应的按钮
@ API
"bookmarked": true
@餐厅对象
private boolean bookmarked;
public boolean isBookmarked() {
return bookmarked;
}
public void setBookmarked(boolean bookmarked) {
this.bookmarked = bookmarked;
}
@的onCreate()
Restaurant rest;
Button btn;
@Override
public void success(Restaurant restaurant, Response response) {
rest = restaurant;
}
if (rest.isBookmarked()) {
btn.setOnClickListener(null);
}
不要改变单击基于标志的侦听器;相反,调用setEnabled(boolean)
:
btn.setEnabled(!rest.isBookmarked());
我不太明白你的代码块标记为 “@的onCreate()” 的结构;你似乎有任何方法之外的代码,它不会编译。因此,我不能为上面的代码行建议一个特定的地方。不过,我的猜测是,正确的地方是success()
方法。 (另外,假定您有一个有效的Restaurant
对象,您应该先检查响应状态。)
我不使用btn onClick()情况R.id.btn: 如果(!rest.isBookmarked()){ postBookmark(); //改装 }其他{ ll_bookmark.setEnabled(false); } break;什么错? –
@ Tr.Buu - 只要您检测到新的“餐厅”对象,您应该立即设置按钮的启用状态。处理单击事件时,通常不会更改启用状态。 (请注意,如果'll_bookmark'是ID为'R.id.btn'的按钮,那么似乎无法重新启用按钮。) –
嗨如何检查isBookmarked()是否为空。餐厅资源=新餐厅();如果(res.isBookmarked!= null){...}运算符'!=“不能应用于'布尔','null' –
请参阅关于[mcve]。你有什么是三个代码 –