2017-06-19 57 views
0

我想檢查來自服務器的布爾值。如果布爾值爲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); 
    } 
+0

請參閱關於[mcve]。你有什麼是三個代碼 –

回答

3

不要改變單擊基於標誌的偵聽器;相反,調用setEnabled(boolean)

btn.setEnabled(!rest.isBookmarked()); 

我不太明白你的代碼塊標記爲 「@的onCreate()」 的結構;你似乎有任何方法之外的代碼,它不會編譯。因此,我不能爲上面的代碼行建議一個特定的地方。不過,我的猜測是,正確的地方是success()方法。 (另外,假定您有一個有效的Restaurant對象,您應該先檢查響應狀態。)

+0

我不使用btn onClick()情況R.id.btn: 如果(!rest.isBookmarked()){ postBookmark(); //改裝 }其他{ ll_bookmark.setEnabled(false); } break;什麼錯? –

+0

@ Tr.Buu - 只要您檢測到新的「餐廳」對象,您應該立即設置按鈕的啓用狀態。處理單擊事件時,通常不會更改啓用狀態。 (請注意,如果'll_bookmark'是ID爲'R.id.btn'的按鈕,那麼似乎無法重新啓用按鈕。) –

+0

嗨如何檢查isBookmarked()是否爲空。餐廳資源=新餐廳();如果(res.isBookmarked!= null){...}運算符'!=「不能應用於'布爾','null' –