gpt4 book ai didi

android - 如何在不重复代码的情况下在多个 fragment 中处理相同的 onClick 操作?

转载 作者:行者123 更新时间:2023-11-29 00:09:59 28 4
gpt4 key购买 nike

我正在为我的第一个大型项目做贡献,并且正在为设计决策而苦苦挣扎。我有两个 fragment 填充一个 ListView 并设置一个自定义 ArrayAdapter。假设列表项是电子邮件,两个 fragment 是 MessageListFragment 和 SearchMessagesFragment。 ArrayAdapter 使用 ViewHolder 模式来填充每条消息并将 onClickListener 附加到“星形”图标。

现在,无论我在哪个 fragment 中,我都希望 onClickListener 做同样的基本事情:将服务器上电子邮件的状态更改为“已加星标”,并确定电子邮件是否需要在列表中移动其位置(即,如果没有过滤器,则单独放置,如果电子邮件按加星标的消息排序,则将其移至顶部/底部,或者如果过滤器仅是未加星标的消息,则将其从当前列表中删除)。

如何以可重用的方式创建此行为,以便我不必在两个 fragment 中重复此代码?

最佳答案

如果我知道您需要执行由一个或两个或更多 fragment 触发的操作,您应该创建一个接口(interface),即:

interface MyCustomAction {
void triggerAction(boolean isTriggered);
}

将其分配给Fragments并在负责Fragments的Activity中实现

在 fragment 中声明 Action :

private MyCustomAction myCustomAction;

在 Fragment 中公开要由 Activity 分配的方法:

public void assignAction(MyCustomAction myCustomAction) {
this.myCustomAction = myCustomAction;
}

在 fragment 中,当调用 onClickListner() 时,执行以下操作:

myCustomAction.triggerAction(true); //or False or what you want...

...在 Activity 中:

myFragment.assignAction(new MyCustomAction() {
@Override
public void triggerAction(boolean isTriggered) {
//Doing something can be triggered by any Fragments using the same Interface
});

关于android - 如何在不重复代码的情况下在多个 fragment 中处理相同的 onClick 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081483/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com