gpt4 book ai didi

android - 在 Android 中正确使用继承

转载 作者:行者123 更新时间:2023-11-29 00:41:58 25 4
gpt4 key购买 nike

我在 3 个列表的顶部有一个“标题”,其中包含用于编辑列表的简单创建读取更新和删除按钮。

我应该如何对 Header 进行子类化,以便覆盖 TaskHeader、ProjectHeader、ClientsHeader(子类)中的监听器

布局、按钮创建、分配等都可以在同一个实现中完成,只需分配监听器就可以委托(delegate)给特定的子类。

更新了建议的解决方案

界面

import android.view.View.OnClickListener;

public interface AttachClickListeners {

void attachCreateListener(OnClickListener l);
void attachReadListener(OnClickListener l);
void attachUpdateListener(OnClickListener l);
void attachDeleteListener(OnClickListener l);

标题

public class Header extends LinearLayout implements AttachClickListeners {
/* removed for shortness */
public void attachCreateListener(OnClickListener listener) {
insertBtn.setOnClickListener(listener);
}

public void attachReadListener(OnClickListener listener) {
selectBtn.setOnClickListener(listener);
}

public void attachUpdateListener(OnClickListener listener) {
updateBtn.setOnClickListener(listener);
}

public void attachDeleteListener(OnClickListener listener) {
deleteBtn.setOnClickListener(listener);
}

然后每次我创建一个标题时,我只是按照@elijah 的建议传递一个不同的监听器对象

最佳答案

如果可以共享 UI 和行为,则不必对 header 进行子类化。

相反,为您要响应的事件的监听器类创建接口(interface)定义。例如,如果您希望对“创建”按钮有不同的响应,请定义一个 onCreateClickedListener 接口(interface),然后为共享 header 对象所在的每个 View 创建该接口(interface)的特定实例。您必须注册监听器;像这样的东西:

createClickedListener = new onCreateClickedListener() {
@Override
public void onClick() { ... }
};

header.setOnCreateClickedListener(createClickedListener);

This教程深入介绍了该主题。

关于android - 在 Android 中正确使用继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794127/

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