我在我的應用程序中有一個簡單的ListView。 ListView綁定到我的ArrayAdapter類,其方法如下實現getView
。Android - 何時將父視圖組傳遞給LayoutInflater.inflate?
class ScheduleListAdapter extends ArrayAdapter<ScheduleItem>
{
@Override public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = _activity.getLayoutInflater().inflate(R.layout.schedule_item2, null);
}
// not shown - code initialize elements of view
return view;
}
在上面的代碼中,注意parent
的ViewGroup參數被忽略,而不是傳遞給inflate
通話。我在多本書和在線示例之後對此代碼進行了建模。
但現在我已經看到了網絡上的其他例子表明,parent
需要傳遞給inflate
如下:
View view = inflater.inflate(R.layout.schedule_item2, parent, false);
我試圖左右逢源,它似乎很好地工作無論哪種方式。但看看source for inflate,看起來當parent
通過時,它可以影響初始化到視圖的LayoutParams。但我不確定如何解釋代碼。
當您將以上內容與使用LayoutInflater與Fragments和RecyclerView的其他在線示例進行比較時,會令人困惑。這些示例似乎總是明確地將parent
參數傳遞給inflate
。我假設有這種情況是有道理的。
有人可以解釋什麼時候通過ViewGroup parent
到inflate
什麼時候不?
希望這會有所幫助:https://possiblemobile.com/2013/05/layout-inflation-as-intended/ –
@RohitArya - 謝謝!那個博客頁面正是我正在尋找的答案。 – selbie