Android KOTLIN-从RecyclerView Adapter调用MainActivity方法

时间:2019-02-24 01:12:06

标签: android android-activity

我想打电话给

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问题:/

3 个答案:

答案 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()
}