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)?"