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

时间:2014-08-01 13:04:49

标签: java android

我在我的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(...);
}

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

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

感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

请使用Java接口实现此目的..

在cardcontainer类中声明一个接口

public interface yourInterface{
        public void  callfromlibrary();
    }

并初始化对象以调用函数

yourInterface object = (yourInterface) MainActivity;

并在主要活动中实现界面,如

Class MainActivity extends activity implements  yourInterface

并实现callfromlibrary()方法

每当您需要使用您创建的对象时,都会从cardcontainer类调用此方法。

object.callfromlibrary()

答案 1 :(得分:3)

要允许CardContainerMainActivity进行通信,您可以在CardContainer中定义一个界面,并在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(...);
    }   

}