多布局主类:
package com.example.work_6_26_second;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import com.example.work_6_26.R;
import java.util.ArrayList;
public class Activity_head extends AppCompatActivity {
RecyclerView recyclerView;
MyRecycAdapter adapter;
ArrayList<String> datas = new ArrayList<>();
View head;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_head);
initDatas();
initView();
initHead();
}
private void initHead() {
head = View.inflate(this,R.layout.head,null);
adapter.setHeadView(head);
}
private void initDatas() {
for (int i =0; i < 80;i++){
datas.add("第:"+(i+1)+"个元素");
}
}
private void initView() {
recyclerView = findViewById(R.id.rec);
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
adapter = new MyRecycAdapter(this);
adapter.setDatas(datas);
recyclerView.setAdapter(adapter);
}
}
多布局适配器类:
package com.example.work_6_26_second;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.work_6_26.R;
import org.w3c.dom.Text;
import java.util.ArrayList;
public class MyRecycAdapter extends RecyclerView.Adapter<ViewHolderSecond> {
ArrayList<String> datas = new ArrayList<>();
Context context;
View headView;
private final int TYPE_ONE = 1;
private final int TYPE_TWO = 2;
public void setDatas(ArrayList<String> datas){
this.datas.clear();
this.datas.addAll(datas);
notifyDataSetChanged();
}
public void setHeadView(View headView){
this.headView = headView;
}
public MyRecycAdapter(Context context) {
this.context = context;
}
@NonNull
@Override
public ViewHolderSecond onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
if(i == TYPE_ONE){
ViewHolderSecond second = new ViewHolderSecond(headView);
return second;
}else{
ViewHolderSecond second = new ViewHolderSecond(LayoutInflater.from(context).inflate(R.layout.item_me, viewGroup, false));
return second;
}
}
@Override
public void onBindViewHolder(@NonNull ViewHolderSecond viewHolderSecond, int i) {
if(i == 0&&headView != null){
return;
}else{
TextView textView = (TextView) viewHolderSecond.getView(R.id.txt);
if(headView != null){
textView.setText(datas.get(i-1));
}else{
textView.setText(datas.get(i));
}
}
}
@Override
public int getItemCount() {
int size = datas.size();
if(headView != null){
size++;
}
return size;
}
@Override
public int getItemViewType(int position) {
if(position == 0&&headView != null){
return TYPE_ONE;
}else{
return TYPE_TWO;
}
}
}
多布局ViewHolder类:
package com.example.work_6_26_second;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.SparseArray;
import android.view.View;
import com.example.work_6_26.R;
public class ViewHolderSecond extends RecyclerView.ViewHolder {
SparseArray<View> views = new SparseArray<>();
public ViewHolderSecond(@NonNull View itemView) {
super(itemView);
}
public View getView(int id){
View view = views.get(id);
if(view == null){
view = itemView.findViewById(R.id.txt);
views.put(id,view);
}
return view;
}
}
效果: