Skip to content Skip to sidebar Skip to footer

How To Put Main Cell On The Top Of Staggeredgridlayout(recycler View)?

I use StaggeredGridLayout in my Recycler View What I need : I can divide recycler view to 2 columns, but I don't know how to put main cell on top of the recycler view I am not su

Solution 1:

Add these lines in onBindViewHolder method

if(position == 0){
      StaggeredGridLayoutManager.LayoutParamslayoutParams=  (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
      layoutParams.setFullSpan(true);
}

Solution 2:

Eventually there is my adapter maybe will help someone to understand how does it work

publicclassAdapterRecViewMainextendsRecyclerView.Adapter<RecyclerView.ViewHolder> {

private List<BaseMarkerElement> mainCardList;
privatefinalintHEADER_VIEW=0;
privatefinalintFOOTER_VIEW=1;

publicAdapterRecViewMain() {
}

publicvoidsetData(List<BaseMarkerElement> mainCardList) {
    this.mainCardList = mainCardList;
}

@OverridepublicintgetItemViewType(int position) {
    if (position == 0) {
        return HEADER_VIEW;
    }
    return FOOTER_VIEW;
}

@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
    if (type == FOOTER_VIEW) {
        Viewv= LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.card_main_activity, viewGroup, false);
        returnnewMainCardViewHolder(v);
    } else {
        Viewv= LayoutInflater.from(viewGroup.getContext())
                .inflate(R.layout.header_view_main_activity, viewGroup, false);
        returnnewHeaderViewHolder(v);
    }
}

@OverridepublicvoidonBindViewHolder(RecyclerView.ViewHolder viewHolder, int positionItem) {
    finalintposition= viewHolder.getAdapterPosition();

    if (viewHolder instanceof HeaderViewHolder) {
        StaggeredGridLayoutManager.LayoutParamslayoutParams=
                (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams();
        layoutParams.setFullSpan(true);

        BaseMarkerElementitem= mainCardList.get(position);
        if (item instanceof HeaderView) {
            HeaderViewheader= (HeaderView) mainCardList.get(position);
            // need to add implementation
        }
    } elseif (viewHolder instanceof MainCardViewHolder) {
        MainCardViewHoldercurrentView= (MainCardViewHolder) viewHolder;
        CardMainActivitycurrentCard= (CardMainActivity) mainCardList.get(position);

        currentView.ivMainCard.setImageResource(currentCard.getIvMainCard());
        currentView.tvBrandName.setText(currentCard.getTvBrandName());
        currentView.tvPrice.setText(currentCard.getTvPrice());
        currentView.tvType.setText(currentCard.getTvType());
    }
}

@OverridepublicintgetItemCount() {
    return mainCardList.size();
}

privateclassMainCardViewHolderextendsRecyclerView.ViewHolder {
    ImageView ivMainCard;
    TextView tvBrandName;
    TextView tvType;
    TextView tvPrice;

    MainCardViewHolder(View view) {
        super(view);
        ivMainCard = (ImageView) view.findViewById(R.id.imageViewMainCard);
        tvBrandName = (TextView) view.findViewById(R.id.tvBrandName);
        tvType = (TextView) view.findViewById(R.id.tvType);
        tvPrice = (TextView) view.findViewById(R.id.tvPrice);
    }
}

privateclassHeaderViewHolderextendsRecyclerView.ViewHolder {

    publicHeaderViewHolder(View itemView) {
        super(itemView);

    }
}
}

Post a Comment for "How To Put Main Cell On The Top Of Staggeredgridlayout(recycler View)?"