2014-01-16 47 views
3

我使用列表視圖的頁腳時出現問題。事實上,我膨脹了一個XML並將其發送到footerView。當我的活動出現時,我的列表視圖正在顯示,兩三秒後(有時更多)我的頁腳正在顯示。爲什麼這麼久?充氣頁腳視圖很慢

這裏是我的代碼的一部分:

private View footerView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    footerView = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.order_footer_item, null); 
    super.onCreate(savedInstanceState); 
} 

// This is Android annotation 
@AfterViews 
protected void setAfterViews() { 
    Adapter adapter = new Adapter(); 
    list.setAdapter(adapter); 
    list.setOnItemClickListener(adapter); 

    TextView text = (TextView) footerView.findViewById(R.id.text); 
    text.setText("Test"); 
    list.addFooterView(footerView); 
} 

我沒有問題,只是放緩。爲什麼?我該如何改進?

Thx預先

+0

你在哪裏將視圖的內容設置爲活動並且問題可能出現在適配器中 – Raghunandan

回答

2

在設置適配器之前添加它。

list.addFooterView(footerView); 

然後

list.setAdapter(adapter); 
+0

工作方式類似於魅力。此外,在適配器之前添加頁腳視圖也是有意義的。 Thx – mrroboaat

+0

謝謝,這樣一個簡單的解決方案,但是當仍然學習這種事情可能會讓你絆倒一段時間。 – LocalPCGuy

1

這是一個棘手的問題對我來說。花了一段時間的工作之後,我意識到我給.inflate(view,parent,boolean)方法提供父參數,而不是將其作爲null,因爲我使用getListView().addFooterView()方法處理它。

錯誤:

TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, this.getListView(), true); 

this.getListView().addFooterView(footerView); 

修復:

TextView footerView = (TextView) ((LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_view, null, false); 

this.getListView().addFooterView(footerView); 
+0

爲什麼傳遞null作爲父項?這是一個好的解決方案嗎?至少,Eclipse會警告你。 – dmcontador

0

首先,你應該建立在onCreateView,在那裏你會得到一個LayoutInflater inflateViewGroup container頁腳視圖。

然後,你會打電話

inflater.inflate(R.layout.footer_view, container, false); 

而其餘的按VIPUL米塔爾的解決方案。