Android:如何返回新创建的RecyclerView列表?

时间:2016-02-15 15:47:18

标签: android android-recyclerview recyclerview-layout

我使用默认布局创建RecyclerView列表。然后我在列表中添加一个新项目,并更新布局以显示新项目。然后我导航到之前的活动。当我返回到RecyclerView活动时,我将返回到通用的默认列表,并且我在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();
    }
});    

1 个答案:

答案 0 :(得分:1)

当您从活动中回击时,您将从堆栈中弹出它,即活动对象将被销毁。这将进一步详细解释here。从这张图片可以理解这个概念的关键。

您可以查看this以查看应如何重新创建活动 - 以及this,了解如何将其应用于回收者视图。