Parent -> Child

Activity -> ListItem

listitem 的动作需要依靠场景的某些属性,又需要做到解耦,因此不能让ListItem拥有Activity的对象。

可以这么做。

class ListItem {
    public interface Properties {
        boolean isTouchable();
        String getName();
        boolean isInSky();
    }
    protected Properties mProperties;
    public void setProperties(Properties p) {
        mProperties = p;
    }
    @Click(R.id.fly)
    void fly() {
        if (p != null && p.isInSky()) {
            // do fly business
        }
    }
}

DemoActivity implements ListItem.Properties {
    public boolean isTouchable() {
        return true;
    }
    public getName() {
        return DemoActivity.class.getSimpleName();
    }
    ...
}

龟速
213 声望6 粉丝

我的主页,欢迎来访