java - 在库文件中发生事件时调用 MainActivity.java 中的方法

标签 java android

我包含了库 Swipeable-Cards在我的安卓项目中。在 MainActvitiy.java 中,onCreate 方法包含类似的内容:

SimpleCardStackAdapter adapter = new SimpleCardStackAdapter(this);

//This should also be done on an event in the library class:
adapter.add(new CardModel("Title2", "Description2 goes here", r.getDrawable(R.drawable.picture2)));

现在,在 CardContainer.java(属于可刷卡库)中有一个事件,我想在该事件上将新项目添加到适配器adapter.add(...)。如上所示,适配器在 MainActvitiy.java 中定义。 我怎样才能做到这一点?

我首先考虑在 MainActivity 中定义一个新方法,然后从我的库类中调用它,就像这样:

public void callfromlibrary() {
    adapter.add(...);
}

但是方法和适配器需要定义为静态的,另外我不知道如何使 MainActivity 的这个方法在 CardContainer.java 中可用。

我相信我需要创建一种监听器来检查 MainActivity 在 CardContainer.java 中发生了什么?我不知道该怎么做。

感谢任何帮助!

最佳答案

允许CardContainer沟通到 MainActivity , 你在 CardContainer 中定义了一个接口(interface)并在 MainActivity 中实现.当事件发生在 CardContainer , 然后它可以调用接口(interface)方法以添加 CardModel到适配器。

public class CardContainer extends ... {

   CardContainerEventListener mCallback;

   // Define a interface
   public interface CardContainerEventListener {
       public void addToAdapter();
   }

   // Method to register callback
   void registerCallback(Activity callback) {
       mCallback = (CardContainerEventListener) callback;
   }

   void someFunction() {
       // Event got generated, invoke callback method
       mCallback.addToAdapter(); 
   }
}

public class MainActivity extends Activity implements CardContainer.CardContainerEventListener {

    // Ensure you register MainActivity with CardContainer, by calling 
    // cardContainer.registerCallback(this)

    public void addToAdapter() {
       adapter.add(...);
    }   

}

关于java - 在库文件中发生事件时调用 MainActivity.java 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25080952/

相关文章:

java - groovy 上的 Cucumber 在查找步骤定义时无法将 null 转换为字符串

java - Jackson 多态反序列化字段错误

android - 如何在线程内使用 Cursor 进行查询? (安卓)

android - 如何将android添加到cordova平台?路径错误?

android - 如何在 RelativeLayout 中将一个 View 放置在另一个 View 之上?

android - Android中带回调函数的通用定时器类

java - GAE 数据存储上的键值数据?

java - Xstream toXml 不序列化基类

java - 非法参数异常 : Unknown entity: models using JPA in Play Framework 2

android - 在 ListView 中查找按钮的位置