2015-06-21 46 views
0

我在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; 
} 

感謝

+0

方法有很多種。上傳你的代碼,並寫錯了一些選項。 – EE66

+0

謝謝,我已將我的基本代碼添加到問題 – kabeersvohra

回答

1

你爲什麼不使用特定的連接監聽器的RecyclerView有:

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

      } 

      @Override 
      public void onChildViewDetachedFromWindow(View view) { 

      } 
     }); 
+0

我不知道爲什麼,但該功能不在android工作室!我已檢查並且所有導入都正確,並且我確信該變量是一個回收視圖,但它不起作用 – kabeersvohra

+0

如果任何人有相同的錯誤,則此偵聽程序僅在版本22.2.0中添加,如果您的22.0.0版本建立gradle它不會工作 – kabeersvohra

相關問題