任何将指定类扩展为函数

时间:2019-06-06 12:34:18

标签: android kotlin android-recyclerview

我正在建立基础活动,这里有一种可以初始化RecyclerView的方法。 我希望此方法具有参数,该参数是扩展 PagedListAdapter<object, object extends RecyclerView.ViewHolder的对象/类。

假设我有myAdapter类,它扩展了PagedListAdapter<myDataObject, myAdapter.ViewHolder>,并且我想用我的方法将myAdapter作为适配器附加在RecyclerView中:

来自活动:

fun foo() = initRecyclerView(myAdapter())

,然后在我的中:

protected fun initRecyclerView(mAdapter: Class<out PagedListAdapter<Any, out RecyclerView.ViewHolder>>) {
    if (mRecyclerView?.layoutManager == null)
        mRecyclerView?.layoutManager = component.linearLayoutManager
    if (mRecyclerView?.adapter == null)
        mRecyclerView?.adapter = mAdapter
}

但是我得到Type mismatch
必填:(RecyclerView.Adapter<RecyclerView.ViewHolder>?..RecyclerView.Adapter<*>?) 找到:Class<out PagedListAdapter<Any, out RecyclerView.ViewHolder>>

如何解决此问题,使该方法“通用”,以接受扩展了PagedListAdapter<object, any extends RecyclerView.ViewHolder>的任何类型?

1 个答案:

答案 0 :(得分:2)

您的参数是.ONESHELL: build-api: build-image set -e CONTAINER_ID=`docker run -d $(IMAGE)` docker wait $$(CONTAINER_ID) docker cp $$(CONTAINER_ID):/usr/src/vendor ./ docker rm -f $$(CONTAINER_ID) ,它是类Class<out PagedListAdapter<Any, out RecyclerView.ViewHolder>>的实例,但是您想要这样的java.lang.Class的实例:

PagedListAdapter