2016-04-21 92 views
1

我正在構建一個應用程序,在一個片段中顯示三個RecyclerView以顯示項目的水平列表。我創建了一個LinearLayoutManager對象並將其設置爲全部三個RecyclerView。但它的崩潰應用程序,說一個LinearLayoutManager只能附加到一個RecyclerView。爲什麼我不能附加到所有雖然我要求相同的屬性。 代碼..在一個LinearLayoutManager僅適用於一個RecyclerView?

recViewBrands.setLayoutManager(llm); 
      recViewCategory.setLayoutManager(llm); 
+0

可以在同一個佈局管理器不能連接到多個回收的意見。 –

+0

爲什麼?我在問爲什麼我不能附上。它只是一個具有屬性的對象,我想爲其他RecyclerView使用相同的屬性對象。所以爲什麼我必須做其他對象 –

回答

0

LinearLayoutManager llm = new LinearLayoutManager(getActivity()); 
     llm.setOrientation(LinearLayoutManager.HORIZONTAL); 
     recViewTopSell.setLayoutManager(llm); 
     recViewBrands.setLayoutManager(llm); 
     recViewCategory.setLayoutManager(llm); 

錯誤沒有它不能像被重用。 LayoutManagerLinearLayoutManager在你的情況下,包含特定於RecyclerView的狀態。

如果涉及三種不同LayoutMangers的設置很多,請考慮使用createLayoutManager()方法調用三次。

+0

如何使用createLayoutManager() –

+0

這將是你自己的方法創建和設置一個LinearLayoutManager的新實例 –

-1

繼馬蒂亞斯回答這樣做:

recViewTopSell.setLayoutManager(newLLM()); 
    recViewBrands.setLayoutManager(newLLM()); 
    recViewCategory.setLayoutManager(newLLM()); 

然後:

private LinearLayoutManager newLLM() { 
     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity()); 
     linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); 
     return linearLayoutManager; 
    } 
+0

我知道這可以做到,但爲什麼我要實例化LinearLayoutManager的三個對象。 –

+0

因爲在回收舊視圖時可以訪問Recycler實例 –

相關問題