添加依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
======================================================================
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<String> list;
private MyRlAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.main_Rl);
recyclerView.setLayoutManager(new LinearLayoutManager(this ));
list = new ArrayList<>();
for (int i = 0 ; i < 50 ; i++) {
list.add(" 想个名字真难 " + i);
}
adapter = new MyRlAdapter ();
TextView textView = new TextView(this );
textView.setText(" 这是第一个头布局 " );
TextView textView1 = new TextView(this );
textView1.setText(" 这是第二个头布局 " );
TextView textView2 = new TextView(this );
textView2.setText(" 这是第三个头布局 " );
adapter.addHeader(textView);
adapter.addHeader(textView1);
adapter.addHeader(textView2);
recyclerView.setAdapter(adapter);
}
class MyRlAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == HEADER_TYPE) {
View view = View.inflate(MainActivity.this , R.layout.rv_header, null );
MyHeaderViewHolder headerViewHolder = new MyHeaderViewHolder(view);
return headerViewHolder;
} else {
View view = View.inflate(MainActivity.this , R.layout.rv_item, null );
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof MyHeaderViewHolder) {
if (((MyHeaderViewHolder) holder).layout.getChildCount() == 0 ) {
((MyHeaderViewHolder) holder).layout.addView(headerList.get(position));
}
} else {
((MyViewHolder) holder).textView.setText(list.get(position - headerList.size()));
}
}
@Override
public int getItemCount() {
return list.size() + headerList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView;
public MyViewHolder(View itemView) {
super (itemView);
textView = itemView.findViewById(R.id.item_tv);
}
}
class MyHeaderViewHolder extends RecyclerView.ViewHolder {
LinearLayout layout;
public MyHeaderViewHolder(View itemView) {
super (itemView);
layout = itemView.findViewById(R.id.Ll_header);
}
}
List<View> headerList = new ArrayList<View>();
private final static int HEADER_TYPE = 0 ;
private final static int ITEM_TYPE = 1 ;
@Override
public int getItemViewType(int position) {
if (position < headerList.size()) {
return HEADER_TYPE;
} else {
return ITEM_TYPE;
}
}
public void addHeader(View view) {
if (headerList != null ) {
headerList.add(view);
notifyDataSetChanged();
}
}
}
}