在开发项目中android端用到最多的就是列表展示数据 今天给大家展示的是recyclerview 多种形式展示item的方式,话不多说咱们直接上代码
private static GridLayoutManager layoutManager;
RecyclerView homepageList;
layoutManager = new GridLayoutManager(getActivity(), 2, GridLayoutManager.VERTICAL, false);
layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { int spansize = 0; switch (adapter.getAdapterItemViewType(position)) { case 0: spansize = 2; break; case 2: spansize = 1; break; } return spansize; } }); homepageList.setHasFixedSize(true); homepageList.addItemDecoration(spaceItemDecoration); homepageList.setLayoutManager(layoutManager);
以上为为recyclerview设置初始化参数 0的时候表示item占半个手机宽度,2的时候表示item占整个手机宽度
接下来直接上adapter代码
public class HomePageBaseAdapter extends BaseRecyclerAdapter<RecyclerView.ViewHolder> implements View.OnClickListener{ private List<HomePageBeanNew> list; private Context mContext; private OnItemClickListener mOnItemClickListener = null; private static final int Banner = 0; private static final int Horizonl = 1; private static final int Grid = 2; private static final int Title = 3; private RecyclerView mRecyclerView; View view = null; public void setOnItemClickListener(OnItemClickListener listener) { this.mOnItemClickListener = listener; } @Override public void onClick(View v) { if (mOnItemClickListener != null) { //注意这里使用getTag方法获取position mOnItemClickListener.onItemClick(v,(int)v.getTag()); } } public static interface OnItemClickListener { void onItemClick(View view , int position); } public HomePageBaseAdapter(List<HomePageBeanNew> list, Context mContext) { this.list = list; this.mContext = mContext; } @Override public int getAdapterItemViewType(int position) { if (list!=null&&list.size()>0) { if (list.get(position).getType() == 2) { return Grid; } else { return Banner; } } return Banner; } @Override public RecyclerView.ViewHolder getViewHolder(View view) { return new GridHolder(view); } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType, boolean isItem) { // view.setOnClickListener(this); switch (viewType) { case Grid: view=LayoutInflater.from(mContext).inflate(R.layout.item_homepage_list_grid1, null); // view.setOnClickListener(this); return new GridHolder(view); case Banner: view=LayoutInflater.from(mContext).inflate(R.layout.item_homepage_list_banner, null); // view.setOnClickListener(this); return new BannerHolder(view); case Horizonl: view=LayoutInflater.from(mContext).inflate(R.layout.item_homepage_list_horizontal, null); // view.setOnClickListener(this); return new HorizontalHolder(view); case Title: return new TitleHolder(LayoutInflater.from(mContext).inflate(R.layout.item_homepage_list_title, null)); default: return null; } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, boolean isItem) { if (holder instanceof HomePageBaseAdapter.BannerHolder) { } else if (holder instanceof HomePageBaseAdapter.HorizontalHolder) { } else if (holder instanceof HomePageBaseAdapter.TitleHolder) { } } @Override public int getAdapterItemCount() { return list == null ? 0 : list.size(); } class BannerHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ ImageView iv; View view_gray; public BannerHolder(View itemView) { super(itemView); this.iv = (ImageView) itemView.findViewById(R.id.item_homepage_list_banner_iv); this.iv.setOnClickListener(this); // this.view_gray = itemView.findViewById(R.id.item_homepage_list_banner_ll_gray); } @Override public void onClick(View v) { if(mOnItemClickListener != null){ mOnItemClickListener.onItemClick(itemView,getAdapterPosition()); } } } class HorizontalHolder extends RecyclerView.ViewHolder { HorizontalScrollView hsview; LinearLayout ll; View gray; public HorizontalHolder(View itemView) { super(itemView); this.ll = (LinearLayout) itemView.findViewById(R.id.item_homepage_list_horizontal_ll); } } class GridHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView count1, name1, activity_price1, org_price1, vipprice,vippriceTwo,vippriceThree, bonus1; ImageView iv1; public GridHolder(View itemView) { super(itemView); this.name1 = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_tvname1); this.count1 = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_count1); this.activity_price1 = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_activityprice1); this.org_price1 = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_orgprice1); this.vipprice = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_vip_price); this.vippriceTwo = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_vip_priceTwo); this.vippriceThree = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_vip_priceThree); this.bonus1 = (TextView) itemView.findViewById(R.id.item_homepage_list_grid_bonus1); this.iv1 = (ImageView) itemView.findViewById(R.id.item_homepage_list_grid_iv1); itemView.setOnClickListener(this); } @Override public void onClick(View v) { if(mOnItemClickListener != null){ mOnItemClickListener.onItemClick(itemView,getAdapterPosition()); } } } class TitleHolder extends RecyclerView.ViewHolder { TextView time; public TitleHolder(View itemView) { super(itemView); } } }具体的布局等xml文件就不上传了 因为每个人的需求不太一样 所以布局都是有一定的区别 以上的代码主要的布局就是一个 recyclerview 配置上adapter 设置一下测试数据就可以进行展示 如有不懂的地方可以给我留言