如何在Android中将ViewModel绑定到gridView?

时间:2020-02-21 10:22:33

标签: android android-adapter android-gridview android-viewmodel android-mvvm

我的活动中有一个带有自定义适配器类的gridView,我无法弄清楚如何将视图模型绑定到活动的gridView。 这是我的gridview适配器:

class ImageAdapter constructor(val mContext: Context, private val resource_layout: Int, private val images: Array<Int>) :
    ArrayAdapter<ImageAdapter.ViewHolder>(mContext, resource_layout) {

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        var convertView = convertView
        val holder : ViewHolder

        if(convertView == null) {
            val layoutInflater = LayoutInflater.from(mContext)
            convertView = layoutInflater.inflate(resource_layout, null)
            holder = ViewHolder()
            holder.imageItem = convertView.added_picture
            convertView.tag = holder
        } else {
            holder = convertView.tag as ViewHolder
        }

        Glide.with(mContext)
            .load("https://picsum.photos/200/300")
            .apply(RequestOptions.centerCropTransform())
            .placeholder(R.drawable.ic_add_icon)
            .into(holder.imageItem)

        return convertView!!
    }

    override fun getCount(): Int {
        return images!!.size
    }

    inner class ViewHolder {
        lateinit var imageItem : ImageView
    }
}

2 个答案:

答案 0 :(得分:1)

<layout></layout>放入行文件中,即可设置ViewModel名称的变量名称。现在,您可以在getViewHolder的适配器中设置视图的膨胀,如下所示。

mTaskCustomLayoutBinding =
            DataBindingUtil.inflate(inflater, R.layout.task_custom_layout, parent, false)
        return MyViewHolder(this!!.mTaskCustomLayoutBinding!!)

在您的Viewholder类中设置绑定

inner class MyViewHolder(val mBinding: TaskCustomLayoutBinding) :
        RecyclerView.ViewHolder(mBinding.getRoot())

因此,您将获得绑定的对象并将数据设置为视图。

希望它会帮助您:)

答案 1 :(得分:0)

GridView网格=(GridView)itemView.findViewById(R.id.mGridView);