Пошаговая верстка Диспетчер сетки не заполняется правильно - PullRequest
0 голосов
/ 02 сентября 2018

Я хочу добавить альбом, как в шахматном порядке, с двумя столбцами, но это так странно, когда я устанавливаю в шахматном порядке менеджер с 2 колонками, я вижу макет так:

ИЗОБРАЖЕНИЕ:

enter image description here

мой адаптер:

class AlbumAdapter: RecyclerView.Adapter<AlbumAdapter.VH>()
{

var list: ArrayList<Album>? = ArrayList<Album>()

fun addToList(addedList: List<Album>)
{
    list?.addAll(addedList)
    notifyDataSetChanged()
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
    val inflater = parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    val view = inflater.inflate(R.layout.item_album, parent, false)
    return VH(view)
}

override fun getItemCount(): Int = list?.size ?: 0

override fun onBindViewHolder(holder: VH, position: Int) {
    val layoutParams = holder.itemView.getLayoutParams() as StaggeredGridLayoutManager.LayoutParams

    //layoutParams.isMarginRelative = true
    holder.bind(list!![position])
}

inner class VH(i: View): RecyclerView.ViewHolder(i) {

    fun bind(model: Album)
    {
        Log.i("glide_flex", model.avatar)
        Glide.with(App.appContext!!)
            .asBitmap()
            .load(model.avatar)
            .into(object: SimpleTarget<Bitmap>()
                {
                    override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                        Log.i("glide_flex", resource.density.toString())
                        (itemView as AppCompatImageView).setImageBitmap(resource)
                        val lp = itemView.layoutParams
                        if (lp is StaggeredGridLayoutManager.LayoutParams) {
                            Log.i("glide_flex", "LP")
                          //  lp.flexGrow = 1.0f
                            lp.width = lp.width / 2
                        }
                    }
                }
            )
    }
}
}
...