有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Recyclerview适配器类中调用主活动方法

假设我有一个名为TestMe()的公共方法,我想在Recycler视图适配器类中使用这个方法,那么如何实现它

我用的是 先申报 MainActivity活动=新的MainActivity(); 活动TestMe()

但它显示了一个错误null异常


共 (4) 个答案

  1. # 1 楼答案

    将活动的引用传递给构造函数中的适配器,或通过setter方法设置它并调用TestMe方法

    if(activity instanceof MainActivity){
        ((MainActivity)activity).TestMe();
    }
    
  2. # 2 楼答案

    存储活动引用不是一个好主意,所以请改用接口

    创建接口

    interface MyInterface{
        public void textMe();
    }
    

    使活动实现接口

    class MainActivity implements MyInterface {
    …
    

    像这样将MyInterface实例传递给构造函数中的适配器

    public MyAdapter(MyInterface interface){
        this.interface = interface;
    }
    

    然后像这样使用

    this.interface.textMe();
    
  3. # 3 楼答案

    在创建和设置适配器的活动中,在构造函数中传递活动对象:

    setAdapter(new Adapter(this));
    

    将其存储在适配器中

    Adapter(Activity act){
       this.act = act;
    }
    

    然后,使用activity对象调用此方法

    act.TestMe();
    
  4. # 4 楼答案

    您不能通过MainActivity activity=new MainActivity();创建活动的实例

    正确的方法是使用instanceof

    if(context instanceof MainActivity){
    
      MainActivity activity = (MainActivity)context;
      activity.TestMe(); 
    }