如何在RecyclerView Adapter中实现自定义ViewGroup

时间:2019-08-29 12:26:03

标签: android kotlin android-recyclerview

我正在使用CarouselView库在RecyclerView中显示图像。 我创建了一个使用此PhotoView库的自定义视图,以使图像可缩放。

我需要实现一个自定义的ViewGoup类,该类在here中进行了说明。我不知道在哪里更改我的RecyclerView适配器,以使用CustomViewGroup而不是默认的ViewGroup

我的ViewGroup类看起来像

class MyViewGroup(context: Context) : ViewGroup(context) {
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {}

override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
    try {
        return super.onInterceptTouchEvent(ev)
    } catch (e: IllegalArgumentException) {
        e.printStackTrace()
        return false
    }

  }
}

这是我的recyclerview适配器

class MyAdapter(
var dataset: MutableList<Upload> = mutableListOf(),
var context: Context?
) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

class ViewHolder(val layout: RelativeLayout) : RecyclerView.ViewHolder(layout)

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val cont = LayoutInflater.from(parent.context)
        .inflate(R.layout.my_item, parent, false) as RelativeLayout
    return ViewHolder(cont)
}


override fun onBindViewHolder(holder: ViewHolder, position: Int) {}

override fun getItemCount(): Int {
    return dataset.size
 }
}

1 个答案:

答案 0 :(得分:1)

您必须使用以下代码:

class MyCarouselView(context: Context, a: AttributeSet) : CarouselView(context, a) {

    override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
        try {
            return super.onTouchEvent(ev)
        } catch (ex: Exception) {
            return false
        }


    }

    override fun onTouchEvent(ev: MotionEvent): Boolean {
        try {
            return super.onTouchEvent(ev)
        } catch (ex: Exception) {
            return false
        }


    }

    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        try {
            return super.dispatchTouchEvent(ev)
        } catch (ex: Exception) {
            return false
        }
    }
}