使用Android-PullToRefresh庫中的PullToRefreshListView添加header時遇到的問題
來源:程序員人生 發(fā)布時間:2015-08-17 09:13:10 閱讀次數(shù):3130次
在開發(fā)中我們常常有向ListView中添加header的需求,并且這個ListView還要提供下拉刷新的功能。下拉刷新庫Android-PullToRefresh是個不錯的下拉刷新庫,不但支持ListView,還支持GridView,WebView,ScrollView。但是當我想向PullToRefreshListViews中添加header的時候我并沒有找到addHeaderView方法。后來發(fā)現(xiàn)PullToRefreshListViews其實不是ListView的子類。他里邊持有ListView對象。因而我找到了下邊的代碼來添加了1個header.
mInviteRecordLv = (PullToRefreshListView) findViewById(R.id.invest_record_list);
View header = getLayoutInflater().inflate(R.layout.invite_record_header, mInviteRecordLv, false);
ListView lv = mInviteRecordLv.getRefreshableView();
lv.addHeaderView(header);
mInviteRecordLv.setAdapter(new InviteRecordAdapter(this));
我以為向上邊那樣寫應當就沒有問題了,但是當我運行程序的時候出現(xiàn)了以下毛病:
java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
后來把代碼改成下邊這樣成功得到了我要的結(jié)果
mInviteRecordLv = (PullToRefreshListView) findViewById(R.id.invest_record_list);
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, AbsListView.LayoutParams.WRAP_CONTENT);
View header = getLayoutInflater().inflate(R.layout.invite_record_header, mInviteRecordLv, false);
header.setLayoutParams(layoutParams);
ListView lv = mInviteRecordLv.getRefreshableView();
lv.addHeaderView(header);
mInviteRecordLv.setAdapter(new InviteRecordAdapter(this));
Android-PullToRefresh庫的下載地址:https://github.com/chrisbanes/Android-PullToRefresh
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈