2016-02-15 60 views
0

我使用默認佈局創建了RecyclerView列表。然後我將一個新項目添加到列表中,然後佈局更新以顯示新項目。然後我導航到以前的活動。當我返回到RecyclerView活動時,我返回到通用默認列表,並且我的RecyclerView列表中的新項目消失了。Android:我如何返回到新創建的RecyclerView列表?

那麼如何返回到RecyclerView和我創建的新項目而不是通用列表?我是否需要添加一些代碼,說明適配器的大小是否大於0,那麼不要使用現有的代碼創建新的列表?我應該在RecyclerView活動還是在適配器中進行測試?如果沒有,我的問題是否會出現,因爲適配器與RecyclerView活動的savedInstanceState無關?

活動:

public class ListContactsActivity extends AppCompatActivity { 

private ListContactsAdapter mContactsAdapter; 
private RecyclerView mRecyclerView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_recyclerviewlist); 

    final List<Contact> mContacts; 
    mContacts = new ArrayList<>(); 

    mRecyclerView = (RecyclerView) findViewById(R.id.cardList); 
    mRecyclerView.setLayoutManager(getLayoutManager()); 
    mRecyclerView.setHasFixedSize(true); 
    mContactsAdapter = new ListContactsAdapter(this, mContacts); 

    mRecyclerView.setAdapter(mContactsAdapter); 
    ... 
} 

private RecyclerView.LayoutManager getLayoutManager() { 
    LinearLayoutManager llm = new LinearLayoutManager(this); 
    llm.setOrientation(LinearLayoutManager.VERTICAL); 
    return llm; 
} 

適配器:在活動

class ListContactsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
... 

@Override 
public int getItemCount() { 
    return mItems.size(); 
} 

工具欄代碼:

... 
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
toolbar.setNavigationIcon(R.drawable.ic_action_previous_item); 
toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     onBackPressed(); 
    } 
});  
+0

請解釋downvote,我對於stackoverflow比較新。 – AJW

+0

顯示ListContactsActivity的來源。 – aelimill

+0

好吧,我現在發佈。 – AJW

回答

1

當你從從堆棧即彈出它的活動回擊活動對象將被銷燬。這在here中有更詳細的解釋。這個概念的核心可以從這幅圖中理解。

你可以看一下this看你如何重新創建活動 - 並this就看你如何應用,爲一個recyclerview。

+0

謝謝,我將退房。對我來說幾乎每篇關於RecyclerViews的文章/博客都關注於創建列表,但沒有保存列表。創建一個製作精美且有價值的列表(例如,我想下載的歌曲的大列表)並沒有好處,然後如果通過單擊後退按鈕從列表中導航離開列表,就會銷燬列表。爲什麼不保存狀態碼就像創建其他需求一樣創建每個RecyclerView列表:適配器,佈局管理器,onCreateViewHolder,onBindViewHolder和getItemCount? – AJW

+0

謝謝,回覆upvoted並接受。 – AJW

+0

謝謝!我希望你把它整理出來了? –

相關問題