2015-09-17 48 views
0

當我想填充RecyclerView在onLoadFinished()與來自CursorLoader返回遊標數據跳過佈局。因爲預計該RecyclerView填充, 但我仍然得到同樣的錯誤「無適配器連接;跳過佈局」未連接任何適配器;使用光標裝載機

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 

    recyclerViewAdapter = new RecyclerViewAdapter(getApplicationContext(), data); 

    //attach Layout Manager to RecyclerView 
    recyclerView.setLayoutManager(newLinearLayoutManager(getApplicationContext())); 

    //attach adapter to RecyclerView 
    recyclerView.setAdapter(recyclerViewAdapter); 

} 

回答

1

最後完成我設法弄清楚這個問題......我所做的是在我的onActivityCreated內部創建一個RecyclerView適配器的實例,僅將我的片段的上下文傳遞給適配器的構造函數,並將適配器設置爲我的RecyclerView

recyclerViewAdapter = new RecyclerViewAdapter(getActivity()); 
recyclerView.setAdapter(recyclerViewAdapter); 

因此,RecyclerView框架具有連接適配器,因此沒有佈局逃課。光標數據ARA被傳遞(交換)以從onLoadFinished的RecyclerView適配器()和onLoadReset()的CursorLoader分別

public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
    recyclerViewAdapter.swapCursor(data); 
} 

@Override 
public void onLoaderReset(Loader<Cursor> loader) { 
    recyclerViewAdapter.swapCursor(null); 
} 

的swapCursor方法已customed我RecyclerView適配器類

0

無論何時您連接的適配器,您RecyclerView會需要自己鋪陳只要包含Activity/Fragment需要進行佈局 - 即屏幕首次顯示給用戶時,屏幕上就會顯示。

這意味着,在你CursorLoader加載完成後,你的佈局可能會被顯示給用戶。要發生這種情況,RecyclerView將需要查詢其適配器以確定要顯示的內容。

而應該設置你的佈局管理器和一個空的適配器您的活動/首次創建片段時,則更新適配器的一次光標完成加載的內容。

+0

內部通過實施的方法設置一個空適配器是指使用默認構造函數創建我的適配器類的實例? – tsiro

+0

我會在您的'RecyclerView'的整個生命週期中使用適配器的相同實例,但只要確保它支持最初沒有項目創建。 –

+0

我的確認爲錯誤不會影響RecyclerView的整體性能。 – tsiro

0

創建視圖時顯示此錯誤消息。有一個回收站,但沒有設置適配器。我會建議創建並將適配器設置爲recyclerview onCreate或onCreateView(如果片段)。然後,只需將光標設置或數據onLoadFinished適配器,並通知您的數據更改適配器..

或忽略的錯誤消息。沒有傷害一對夫婦後,由錯誤信息;-)

+0

這就是我要去do..just ingoring錯誤信息......反正感謝對您的幫助.. – tsiro

+0

但是,如果你recyclerview在片段和您正在使用裝載機的話,最好在oncreateview與空檢查之前創建以創造適配器這樣每次恢復到分段時都可以避免重新創建適配器。這也將保持適配器的狀態。 – Thilek