Recyclerview列表item设置成等宽高的正方形,通过计算宽度动态赋值

首先是效果图

Recyclerview列表item设置成等宽高的正方形,通过计算宽度动态赋值_第1张图片

然后是关键代码

//onBindViewHolder 给Item元素赋值
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {

//获取内容layout的parms
        ViewGroup.LayoutParams parm = holder.layout.getLayoutParams();
//通过获取gridlayoutmanager的个数于宽度动态给parm赋予高度
        parm.height = gridLayoutManager.getWidth()/ gridLayoutManager.getSpanCount()
                - 2 * holder.layout.getPaddingLeft() - 2*((ViewGroup.MarginLayoutParams)parm).leftMargin;


    }

其中的layout为item中的layout,通过以下方法绑定的

   class ViewHolder extends RecyclerView.ViewHolder {
        TextView mText;
        ImageView mImage;
        LinearLayout layout;

        ViewHolder(View itemView) {
            super(itemView);
            layout = itemView.findViewById(R.id.layout);
            mImage = itemView.findViewById(R.id.ItemImageView);
            mText = itemView.findViewById(R.id.item_tx);
        }
    }

gridLayoutManager为GridLayoutManager,在构造函数里传递进来

    public GridItemAdapter(List list, GridLayoutManager gridLayoutManager) {
        this.list = list;
        this.gridLayoutManager =gridLayoutManager;
    }

recyclerView调用方代码如下

     GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3);
        //设置RecyclerView管理器
        gridListView.setLayoutManager(gridLayoutManager);
        //初始化适配器
        mAdapter = new GridItemAdapter(list,gridLayoutManager);

over

你可能感兴趣的:(Android,java)