这是activity :
import android.app.ProgressDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; public class MainActivity extends AppCompatActivity { private RecyclerView rv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rv = (RecyclerView) findViewById(R.id.rv1); View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item2, null); ProgressDialog pg=new ProgressDialog(this); pg.setMax(100); pg.setMessage("正在加载中...."); pg.setIndeterminate(true); pg.show(); final GridLayoutManager manager = new GridLayoutManager(this, 2); final Myadapter adpter = new Myadapter(view, 10); rv.setLayoutManager(manager); manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { if (position==0){ return manager.getSpanCount(); }else if(position ==12){ return manager.getSpanCount(); } return 1; } }); rv.setAdapter(adpter); } }这个是adapter:
import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int ITEM_VIEW_TYPE_HEADER = 0; private static final int ITEM_VIEW_TYPE_ITEM = 1; private static final int ITEM_VIEW_TYPE_BOTTOM = 2; private static final int ITEM_VIEW_TYPE_GRID = 2; private View header; private List<String> labels; public Myadapter(View header, int count) { if (header == null) { throw new IllegalArgumentException("你的头部控件空了"); } this.header = header; this.labels = new ArrayList<String>(count); for (int i = 0; i < count; i++) { labels.add(String.valueOf(i)); } } public boolean isHeader(int position) { return position == 0; } @Override public int getItemViewType(int position) { if (position == 0) { return ITEM_VIEW_TYPE_HEADER; } else if (position == labels.size() + 1) { Log.e("sht", "返回的是----->Two"); return ITEM_VIEW_TYPE_BOTTOM; } else if (position == 6) { return ITEM_VIEW_TYPE_GRID; } return ITEM_VIEW_TYPE_ITEM; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == ITEM_VIEW_TYPE_HEADER) { return new ViewHolder(header); } else if (viewType == ITEM_VIEW_TYPE_BOTTOM) { Log.e("sht", "返回的是Two"); View view1 = LayoutInflater.from(parent.getContext()).inflate(R.layout.bottom, parent, false); return new ViewHolderTwo(view1); } else if (viewType == ITEM_VIEW_TYPE_GRID) { View view1 = LayoutInflater.from(parent.getContext()).inflate(R.layout.bottom, parent, false); return new ViewHolderThree(view1); } View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { //如果是第一个 那么就跳走 if (isHeader(position)) { return; } if (holder instanceof ViewHolderTwo) { ViewHolderTwo h = (ViewHolderTwo) holder; h.tvtwo.setText("啦啦啦啦啦啦啦"); }else if (holder instanceof ViewHolderThree){ ViewHolderThree h = (ViewHolderThree) holder; } else { ViewHolder h = (ViewHolder) holder; if ((position>6&&position<getItemCount()-1)||position<6) { h.tv.setText(labels.get(position - 1)); h.tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("sht", "点击了的item-->" + position); } }); } } } @Override public int getItemCount() { return labels.size() + 2; } class ViewHolder extends RecyclerView.ViewHolder { public TextView tv; public ViewHolder(View v) { super(v); tv = (TextView) v.findViewById(R.id.item1); } } class ViewHolderTwo extends RecyclerView.ViewHolder { public TextView tvtwo; public ViewHolderTwo(View v) { super(v); tvtwo = (TextView) v.findViewById(R.id.footer); } } class ViewHolderThree extends RecyclerView.ViewHolder { public TextView tvtwo; public ViewHolderThree(View v) { super(v); tvtwo = (TextView) v.findViewById(R.id.footer); } } }布局文件 我就不去贴了 都是 最简单的 TextView
下面是效果图: