我在我的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中会发生什么?我不知道该怎么做。
感谢任何帮助!
答案 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)
要允许CardContainer
与MainActivity
进行通信,您可以在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(...);
}
}