【问题标题】:How to put main cell on the top of StaggeredGridLayout(recycler view)?如何将主单元格放在 StaggeredGridLayout(回收器视图)的顶部?
【发布时间】:2017-07-01 08:39:16
【问题描述】:

我在Recycler View 中使用StaggeredGridLayout

我需要什么:

我可以将回收站视图分成 2 列,但我不知道如何将主单元格放在回收站视图的顶部

我不确定,但也许我可以将它放在容器中并在滚动期间尝试隐藏它?就像我们在用户开始向上滚动工具栏时使用工具栏一样。

但我不确定

如何将主单元格放在 StaggeredGridLayout(recycler view) 的顶部?

提前致谢!

【问题讨论】:

  • 所以,你需要一个标题。也许this 有帮助。

标签: java android android-recyclerview


【解决方案1】:

在 onBindViewHolder 方法中添加这些行

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

【讨论】:

    【解决方案2】:

    最终我的适配器可能会帮助某人了解它是如何工作的

    public class AdapterRecViewMain
        extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
    private List<BaseMarkerElement> mainCardList;
    private final int HEADER_VIEW = 0;
    private final int FOOTER_VIEW = 1;
    
    public AdapterRecViewMain() {
    }
    
    public void setData(List<BaseMarkerElement> mainCardList) {
        this.mainCardList = mainCardList;
    }
    
    @Override public int getItemViewType(int position) {
        if (position == 0) {
            return HEADER_VIEW;
        }
        return FOOTER_VIEW;
    }
    
    @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int type) {
        if (type == FOOTER_VIEW) {
            View v = LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.card_main_activity, viewGroup, false);
            return new MainCardViewHolder(v);
        } else {
            View v = LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.header_view_main_activity, viewGroup, false);
            return new HeaderViewHolder(v);
        }
    }
    
    @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int positionItem) {
        final int position = viewHolder.getAdapterPosition();
    
        if (viewHolder instanceof HeaderViewHolder) {
            StaggeredGridLayoutManager.LayoutParams layoutParams =
                    (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams();
            layoutParams.setFullSpan(true);
    
            BaseMarkerElement item = mainCardList.get(position);
            if (item instanceof HeaderView) {
                HeaderView header = (HeaderView) mainCardList.get(position);
                // need to add implementation
            }
        } else if (viewHolder instanceof MainCardViewHolder) {
            MainCardViewHolder currentView = (MainCardViewHolder) viewHolder;
            CardMainActivity currentCard = (CardMainActivity) mainCardList.get(position);
    
            currentView.ivMainCard.setImageResource(currentCard.getIvMainCard());
            currentView.tvBrandName.setText(currentCard.getTvBrandName());
            currentView.tvPrice.setText(currentCard.getTvPrice());
            currentView.tvType.setText(currentCard.getTvType());
        }
    }
    
    @Override public int getItemCount() {
        return mainCardList.size();
    }
    
    private class MainCardViewHolder extends RecyclerView.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);
        }
    }
    
    private class HeaderViewHolder extends RecyclerView.ViewHolder {
    
        public HeaderViewHolder(View itemView) {
            super(itemView);
    
        }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多