我正在建立基础活动,这里有一种可以初始化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>
的任何类型?
答案 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