2017-06-06 52 views
0

我有一個視圖與一個RecyclerView和一個ViewModel,我有一個對象列表,我用一個適配器和一個ViewHolder填充RecyclerView。從Android的RecyclerView子視圖模型調用父ViewModel

每個對象都是一個ViewModel,它有一個點擊事件轉到Detail,點擊事件被觸發時,應用程序向服務器請求數據,如果數據正確,則導航到詳細信息屏幕。

我有一個「加載」檢查,以防止用戶按兩次相同的孩子,但由於每個孩子都有自己的viewmodel實例,如果按快速不同按鈕(快於服務器響應),所有他們被解僱。

那麼,有無論如何調用一個RecyclerView viewmodel子的父視圖模型,或任何其他選項?其實我可以考慮做一個單身人士來保持孩子的加載狀態。

回答

0

在我用什麼到底是一個獨立的,並的AtomicBoolean這樣的:

public final class LoadingStatusSingleton { 
    private static final LoadingStatusSingleton ourInstance = new LoadingStatusSingleton(); 

    public static LoadingStatusSingleton getInstance() { 
     return ourInstance; 
    } 

    private LoadingStatusSingleton() { 
     isLoading = new AtomicBoolean(false); 
    } 

    private AtomicBoolean isLoading; 

    public synchronized boolean getLoading() { 
     return isLoading.get(); 
    } 

    public synchronized void setLoading(boolean value) { 
     isLoading.set(value); 
    } 
} 

我改變的AtomicBoolean爲真或假從不同的ViewModels情況下的需求。

0

在您的viewmodel中添加一個布爾屬性,smt如:isLoading,並在您調用webservice時將它設置爲true,而isLoading == true禁用從視圖child中點擊事件。

+0

這就是我第一次做的,但是這隻會阻止從一個單獨的孩子回憶自己,如果你按下一個然後按另一個,那麼第二個視圖的布爾值就是false。 – Mulflar

+0

您是否爲您的視圖設置了標籤? –

+0

嗯...不,我不這麼認爲 – Mulflar

相關問題