我想打电话给
fun androidisgarbage(){
}
RecyclerView适配器的MainActivity中的方法,所以我尝试:
(getActivity() as MainActivity).androidisgarbage()
在getActivity上得到此错误:
None of the following functions can be called with the arguments supplied:
public open fun getActivity(context: Context!, requestCode: Int, intent: Intent!, flags: Int): PendingIntent! defined in android.app.PendingIntent
public open fun getActivity(context: Context!, requestCode: Int, @RecentlyNonNull intent: Intent!, flags: Int, @RecentlyNullable options: Bundle!): PendingIntent! defined in android.app.PendingIntent
使用从MainActivity传递的上下文,如下所示:
(getActivity(context) as MainActivity).androidisgarbage()
也不起作用
请帮助!我已经坐了很多小时了,所有这些都是正常的android bs问题:/
答案 0 :(得分:2)
活动中
public interface OnClickListener {
fun onClick()
}
val adapater = Adapter(items, object: OnClickListener {
androidisgarbage()
})
在适配器中,
class Adapater (val items: List<Any>, val listener: OnClickListener) : RV... {
...
//call to fire event on Activity
listener.onClick()
}
答案 1 :(得分:0)
我认为使用带有活动名称的上下文来调用该方法,就像我正在使用的那样 从活动调用适配器时,我向适配器发送了上下文 然后将其命名为
(context as MainActivity).myMethod()
为我工作
答案 2 :(得分:0)
我知道我回答这个问题迟到了,但它可以帮助将来的人。 您可以通过调整以下技术在适配器中调用活动方法
class StudentListAdapter(context: Context,list:
ArrayList<Student?>):RecyclerView.Adapter<StudentListAdapter.ViewHolder>() {
private var mContext = context
private var mList = list
// to call activity method do following
// StudentList is activity
(mContext as StudentList).methodName()
}