可以添加Header和Footer的适配与RecyclerView的Adapter
- 可以添加多个Header和多个Footer
- 采用的是包裹原本的Adapter的方式,无需修改原本Adapter
- 同步子Adapter的数据改变事件
如果已经添加了一个Header,那么在子Adapter中的ViewHolder中调用getAdapterPosition()方法时返回的是该item在子Adapter中的位置+1,这时可以AdvanceAdapter的getHeaderSize方法获取头部的数量并减去,得到正确的位置
NormalAdapter normalAdapter = new NormalAdapter(msgs);
advanceAdapter = new AdvanceAdapter(normalAdapter);
View header = getLayoutInflater().inflate(R.layout.header, null);
View header2 = getLayoutInflater().inflate(R.layout.header2, null);
View footer = getLayoutInflater().inflate(R.layout.footer, null);
View footer2 = getLayoutInflater().inflate(R.layout.footer2, null);
advanceAdapter.addHeader(header);
advanceAdapter.addHeader(header2);
advanceAdapter.addFooter(footer);
advanceAdapter.addFooter(footer2);
recyclerView.setAdapter(advanceAdapter);
compile 'zhou.widget:advanceadapter:1.0'
by zzhoujay