大家是如何实现复杂的UI展示和点击事件绑定的?

发布于 2022-09-07 23:58:08 字数 775 浏览 43 评论 0

比如说一个UI特别复杂,会展示4种情况的文本,这4种情况点击事件还是不一样的。

void updateUI() {
    if (mIsA) {
        if (mIsB) {
            mTextView.setText("111111");
        } else {
            mTextView.setText("33333");
        }
    } else {
        if (mIsC) {
            mTextView.setText("222222");
        } else {
            mTextView.setText("444444");
        }
    }
}

如果我的点击事件再去写一模一样的判断就太重复了……

onClick(View v) {
    if (mIsA) {
        if (mIsB) {
            // do thing 11111
        } else {
            // do thing 3333333
        }
    } else {
        if (mIsC) {
            // do thing 222222
        } else {
            // do thing 44444
        }
    }   
}

我想的办法,是在更新UI的时候,处理UI展示的时候,就对应的设置上不同的onclicklistener

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

雨落星ぅ辰 2022-09-14 23:58:08

用switch,判断mTextView.getText()中文案

扬花落满肩 2022-09-14 23:58:08

自问自答,我现在认为比较好的方式是

void updateUI() {
    mTextView.setOnClickListener(null);
    if (mIsA) {
        if (mIsB) {
            mTextView.setText("111111");
            mTextView.setOnClickListener(mClickListener1);
        } else {
            mTextView.setText("33333");
            mTextView.setOnClickListener(mClickListener3);
        }
    } else {
        if (mIsC) {
            mTextView.setText("222222");
            mTextView.setOnClickListener(mClickListener2);
        } else {
            mTextView.setText("444444");
            mTextView.setOnClickListener(mClickListener4);
        }
    }
}

OnClickListener mClickListener1 = new OnClickListener() {
    void onClick() {
        // do thing 11111
    }
};

OnClickListener mClickListener2 = new OnClickListener() {
    void onClick() {
        // do thing 22222
    }
};

OnClickListener mClickListener3 = new OnClickListener() {
    void onClick() {
        // do thing 33333
    }
};

OnClickListener mClickListener4 = new OnClickListener() {
    void onClick() {
        // do thing 44444
    }
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文