如何在加载活动后调用函数

时间:2015-06-21 13:51:11

标签: android listener android-recyclerview get-childitem

我在android中有一个带有RecyclerView的活动。我试图在OnCreate的RecyclerView上调用getChildAt(i),但它返回null。我在为测试创建的按钮单击侦听器中尝试了相同的操作,它返回项目正常。这必须是因为RecyclerView在OnCreate中此时尚未加载其子项,并且我需要在加载活动时访问其第一个子项。是否有任何形式的监听器可以在加载活动后检查,并且在加载活动时创建RecyclerView的子节点时没有按下手动按钮?我无法为活动或RecyclerView找到合适的监听器。

这是我的基本代码:

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

    mainRec = (RecyclerView) findViewById(R.id.cardList);
    mainRec.setHasFixedSize(true);

    lm = new LayoutManager(this);

    mainRec.setLayoutManager(lm);
    mainRecAdap = new HappyAdapter(db.getListData(), this);
    mainRec.setAdapter(mainRecAdap);

    //this is where I am trying to call getChildAt

}

@Override
protected void onPause()
{
    super.onPause();
    restoreState();
}

@Override
protected void onResume()
{
    super.onResume();
    restoreState();
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.menu_list, menu);
    return true;
}

private void restoreState()
{
    setToolbarColor(backgroundColour);
}


@Override
public void onBackPressed()
{
    super.onBackPressed();
    overridePendingTransition(R.anim.fade_forward, R.anim.right_slide_out);
}

@Override
protected int getLayoutResource()
{
    return R.layout.activity_list;
}

由于

1 个答案:

答案 0 :(得分:1)

为什么不使用RecyclerView具有的特定附件监听器:

recyclerView.addOnChildAttachStateChangeListener(new RecyclerView
                .OnChildAttachStateChangeListener() {
            @Override
            public void onChildViewAttachedToWindow(View view) {

            }

            @Override
            public void onChildViewDetachedFromWindow(View view) {

            }
        });