2017-02-22 62 views
0

我試圖保持甚至切換標籤後,填補了recyclerview。 我一直在努力,嘗試了幾種方法,但都沒有成功。保持Recyclerview選項卡上的變化

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Intent intent = getIntent(); 

    initTab 
} 

private void initTab(){ 

    //tab setup 
    mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); 
    mTabHost.setup(MainActivity.this,getSupportFragmentManager(),android.R.id.tabcontent); 

    ... 

    mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator(createTabView(icon_search, "search")), 
      searchFragment.class, null); 
    ...more tabs added... 
    return; 

片段

private RecyclerView results; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         final Bundle savedInstanceState){ 

    View v = inflater.inflate(R.layout.tab_search, container, false); 
    results = (RecyclerView) v.findViewById(R.id.search_results); 
    results.setHasFixedSize(true); 

    LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); 
    results.setLayoutManager(mLayoutManager); 
    ScrollListener mScrollListener = new ScrollListener(mLayoutManager); 
    results.setAdapter(searchResultsAdapter); 
    results.addOnScrollListener(mScrollListener); 

    return v; 

我不能讓mLayoutManager單身或者否則我從recyclerview東西得到一個錯誤,如

「佈局管理已經attatched到RecyclerView 「

肖像模式i被鎖,當你交換從片段遠MainActivity不切換到其他活動

回答

1

,它越來越卸載保存記憶。然後,當你換回它時,它需要從頭開始重新加載。這就是爲什麼你的RecyclerView正在失去它的物品。你可以嘗試找到一種方法來阻止它被卸載,但是由於Android的內存有限,我們並不想熱情地丟棄漂亮的內存管理功能。

您希望您的RecyclerView持久化項目。答案就在於RecyclerView如何獲得它的物品。 RecyclerView只管理加載其所有RecyclerView.Adapter所說的項目的子集。如果RecyclerView.Adapter.getItemCount()返回0,那麼RecyclerView將不加載任何內容。所以,RecyclerView.Adapter是真正的罪魁禍首。

如果你這樣做,那麼你的RecyclerView.Adapter會記住它創建時的最後一個項目列表,而不是始終從一個空列表開始,那麼你的RecyclerView將呈現該列表。

現在你的問題是關於持久對象的列表(相對簡單的),而不是試圖得到一些意見留在後臺充氣(相對複雜,有些不必要的由於內存的東西)。

希望這會有所幫助。

+0

我明白了。我懷疑適配器是罪魁禍首,我應該測試它。 這很簡單,我只是將適配器製作成單件,並保存下來。以前我曾經在onCreateView – John

+0

中實例化我很高興這對你來說是一個簡單的改變!如果您覺得它回答了您的問題,您能否將這個答案標記爲已回答問題? – DanielLaneDC

相關問題