![](/img/trans.png)
[英]In Android, how do I create a popup and submit data to the main view?
[英]Create a main abstract View in android
我有一个RelativeLayout,它包含自定义图像/文本视图,所有这些视图共享许多共同的方法(当前在接口中收集),并且在所有类中都实现相同。
我想最小化现有视图之间的重叠代码量。 我知道Java中没有多重继承,但是有什么方法可以创建一个视图来保存所有相似的代码,并从Image / Text / Layout ..视图继承?
提前致谢
我通过拥有一个单独的类来做类似的事情,我们称之为ViewHelper
。 此类仅具有公共静态方法,这些方法执行您希望在接口实现中拥有的功能。 我在每个实现中都调用此类。 这不是一个完美的解决方案,因为我仍然有一些重复的代码,但是我只从每个实现中调用一个公共静态方法,而将实现放在单个类ViewHelper
。
我将在下面尝试描述一些通用代码示例的含义。
界面:
public interface IView {
public void someMeth(View view);
}
ViewHelper
:
public class ViewHelper {
public static void someMethImpl(View view) {
/**
* here you'll have the implementation if the implementation can be
* abstracted to a View
*/
}
public static void someMethImpl(ImageView view) {
/**
* here you'll have the implementation if the implementation can be
* abstracted to an ImageView
*/
}
}
然后对于每个自定义视图/视图组类:
public class CustomRelativeLayout extends RelativeLayout implements IView {
/// constructors
@Override
public void someMeth(View view) {
ViewHelper.someMethImpl(this);
}
}
要么:
public class CustomImageView extends ImageView implements IView {
// constructors
@Override
public void someMeth(View view) {
ViewHelper.someMethImpl(this);
}
}
要么:
public class CustomTextView extends TextView implements IView {
// constructors
@Override
public void someMeth(View view) {
ViewHelper.someMethImpl(this);
}
}
创建一个简单的Java class
来保存您的逻辑并在其中编写代码,并具有执行回调逻辑的接口,将接口回调路由到您创建的类。 我在下面给出了示例实现/伪代码。
public class SampleLogicClass implements SampleInterface{
public sample(){
}
@Override
public void callLogic1(){
// Write something
}
@Override
public void callLogic2(){
// Write something
}
public void registerInterface(SampleInterface interface){
sampleInterface = interface;
}
public interface SampleInterface(){
void callLogic1();
void callLogic2();
}
}
您也可以从RelativeLayout / AnyView / ViewGroup等中执行相同的操作。只需使用接口的示例注册来注册回调,并实现您的逻辑即可。 如果您可以提供更多信息/代码,将很容易为您提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.