使用Android-PullToRefresh庫中的PullToRefreshListView新增headerView

yangxi_001發表於2016-01-06
在開發中我們常常有向ListView中新增header的需求,並且這個ListView還要提供下拉重新整理的功能。下拉重新整理庫Android-PullToRefresh是個不錯的下拉重新整理庫,不僅支援ListView,還支援GridView,WebView,ScrollView。但是當我想向PullToRefreshListViews中新增header的時候我並沒有找到addHeaderView方法。後來發現PullToRefreshListViews並不是ListView的子類。他裡邊持有ListView物件。於是我找到了下邊的程式碼來新增了一個header.
[Java] 純文字檢視 複製程式碼
?
1
2
3
4
5
mInviteRecordLv = (PullToRefreshListView) findViewById(R.id.invest_record_list); 
02.View header = getLayoutInflater().inflate(R.layout.invite_record_header, mInviteRecordLv, false); 
03.ListView lv = mInviteRecordLv.getRefreshableView(); 
04.lv.addHeaderView(header); 
05.mInviteRecordLv.setAdapter(new InviteRecordAdapter(this)); 


我以為向上邊那樣寫應該就沒有問題了,但是當我執行程式的時候出現瞭如下錯誤:
java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
後來把程式碼改成下邊這樣成功得到了我要的結果

[Java] 純文字檢視 複製程式碼
?
1
2
3
4
5
6
7
mInviteRecordLv = (PullToRefreshListView) findViewById(R.id.invest_record_list); 
02.AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT); 
03.View header = getLayoutInflater().inflate(R.layout.invite_record_header, mInviteRecordLv, false); 
04.header.setLayoutParams(layoutParams); 
05.ListView lv = mInviteRecordLv.getRefreshableView(); 
06.lv.addHeaderView(header); 
07.mInviteRecordLv.setAdapter(new InviteRecordAdapter(this)); 

相關文章