//首先是布局
<android.support.v7.widget.RecyclerView android:id="@+id/recy" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>//主界面
public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private ArrayList<Bean> arrayList11; private RecyclerAdapter<Bean> Textdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView=(RecyclerView)findViewById(R.id.recy); initdata(); } private void initdata() { arrayList11 = new ArrayList<>(); Bean bean = new Bean(R.mipmap.a, " "); Bean bean1 = new Bean(R.mipmap.s, " "); Bean bean2 = new Bean(R.mipmap.ss, " "); Bean bean3 = new Bean(R.mipmap.kk, " "); Bean bean4 = new Bean(R.mipmap.m, " "); Bean bean5 = new Bean(R.mipmap.pp, " "); Bean bean6 = new Bean(R.mipmap.vcaa, " "); Bean bean7 = new Bean(R.mipmap.a33, " "); Bean bean8 = new Bean(R.mipmap.d, " "); Bean bean9 = new Bean(R.mipmap.w, " "); arrayList11.add(bean); arrayList11.add(bean1); arrayList11.add(bean2); arrayList11.add(bean3); arrayList11.add(bean4); arrayList11.add(bean5); arrayList11.add(bean6); arrayList11.add(bean7); arrayList11.add(bean8); arrayList11.add(bean9); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)); recyclerView.setAdapter(Textdapter = new RecyclerAdapter<Bean>(MainActivity.this, arrayList11, R.layout.recyclervier_item) { @Override public void convert(RecyclerViewHolder holder, Bean data, int position) { ImageView hon_img = holder.findView(R.id.item_icon); hon_img.setImageResource(arrayList11.get(position).getImgid()); } @Override public void onBindViewHolder(RecyclerViewHolder holder, final int position) { super.onBindViewHolder(holder, position); holder.findView(R.id.item_icon).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this, XiangqingActivity.class); /* intent.putExtra("img", arrayList11.get(position).getImgid()); intent.putExtra("name", arrayList11.get(position).getName());*/ startActivity(intent); } }); } }); //设置item之间的间隔 SpacesItemDecoration decoration = new SpacesItemDecoration(9); recyclerView.addItemDecoration(decoration); } }
//工具类设置图片之间的间隔
public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private int space; public SpacesItemDecoration(int space) { this.space=space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.left=space; outRect.right=space; outRect.bottom=space; if(parent.getChildAdapterPosition(view)==0){ outRect.top=space; } } }
//Recycler适配器可以一直用
public abstract class RecyclerAdapter<T> extends RecyclerView.Adapter<RecyclerViewHolder> { private Context mContext; private List<T> mDatas; private int mLayoutId; private LayoutInflater mInflater; private OnItemClickListener onItemClickListener; public RecyclerAdapter(Context mContext, List<T> mDatas, int mLayoutId) { this.mContext = mContext; this.mDatas = mDatas; this.mLayoutId = mLayoutId; mInflater = LayoutInflater.from(mContext); } @Override public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //这里是创建ViewHolder的地方,RecyclerAdapter内部已经实现了ViewHolder的重用 //这里我们直接new就好了 return new RecyclerViewHolder(mInflater.inflate(mLayoutId, parent, false)); } @Override public void onBindViewHolder(final RecyclerViewHolder holder, int position) { if (onItemClickListener != null) { //设置背景 holder.itemView.setBackgroundResource(R.drawable.recycler_bg); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //注意,这里的position不要用上面参数中的position,会出现位置错乱 onItemClickListener.OnItemClickListener(holder.itemView, holder.getLayoutPosition()); } }); } convert(holder, mDatas.get(position), position); } public abstract void convert(RecyclerViewHolder holder, T data, int position); @Override public int getItemCount() { return mDatas.size(); } /**自定义RecyclerView item的点击事件的点击事件*/ interface OnItemClickListener { void OnItemClickListener(View view, int position); } }、、、、、、、、、、、、、、、、、、
public class RecyclerViewHolder extends RecyclerView.ViewHolder { /** 用于存储当前item当中的View */ private SparseArray<View> mViews; public RecyclerViewHolder(View itemView) { super(itemView); mViews = new SparseArray<View>(); } public <T extends View> T findView(int ViewId) { View view = mViews.get(ViewId); //集合中没有,则从item当中获取,并存入集合当中 if (view == null) { view = itemView.findViewById(ViewId); mViews.put(ViewId, view); } return (T) view; } public RecyclerViewHolder setText(int viewId, String text) { TextView tv = findView(viewId); tv.setText(text); return this; } public RecyclerViewHolder setText(int viewId, int text) { TextView tv = findView(viewId); tv.setText(text); return this; } public RecyclerViewHolder setImageResource(int viewId, int ImageId) { ImageView image = findView(viewId); image.setImageResource(ImageId); return this; } public RecyclerViewHolder setImageBitmap(int viewId, Bitmap bitmap) { ImageView image = findView(viewId); image.setImageBitmap(bitmap); return this; } public RecyclerViewHolder setImageNet(int viewId, String url) { ImageView image = findView(viewId); //使用你所用的网络框架等 return this; } }