gpt4 book ai didi

android - 动态分配资源与大开关案例

转载 作者:行者123 更新时间:2023-11-29 14:52:16 25 4
gpt4 key购买 nike

我对我的 Android 代码的性能和最佳方法有疑问。

我需要做的很简单,我想根据一个 int 参数动态地将一个文本值分配给一个字符串资源:

现在我正在使用一个大开关盒

int messagesCategory;
if(extras !=null) {
messagesCategory = extras.getInt("category");
}

TextView titleText;
titleText = (TextView) findViewById(R.id.headerTitle);

switch (messagesCategory) {
case 1: titleText.setText(R.string.TitleMessageList1); break;
case 2: titleText.setText(R.string.TitleMessageList2); break;
case 3: titleText.setText(R.string.TitleMessageList3); break;
case 4: titleText.setText(R.string.TitleMessageList4); break;

case ...: titleText.setText(R.string.TitleMessageList...); break;

case n: titleText.setText(R.string.TitleMessageListn); break;
default: titleText.setText("a default title"); break;
}

假设我在这个开关中有 30 行...它有效,但在许多情况下,看起来有更好的方法来实现这一点。不幸的是,看起来不可能为 R.string 分配一些动态的东西。

所以我的第一个问题是:1) 性能方面,在这种情况下,在 30 个左右的情况下使用大开关是否有问题?2) 最好的方法应该是什么?

谢谢,祝你有美好的一天

最佳答案

简单,

int[] stringIds = {R.string.TitleMessageList1, R.string.TitleMessageList2,...};

int messagesCategory;
TextView titleText = (TextView) findViewById(R.id.headerTitle);
if(extras !=null) {
messagesCategory = extras.getInt("category");
if(messagesCategory <= n)
titleText.setText(stringIds[messagesCategory]);
else titleText.setText("a default title");
}

现在,没有 switch-case 和比较,基本的 Java 和 Android 基础知识使它变得简单和简短..

由于 R.string.XXX 是在 R.java 文件中生成的 int 值,因此您必须为其创建一个 int 数组值并使用您的 int messagesCategory 获取值。并直接设置为TextView..

关于android - 动态分配资源与大开关案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14600091/

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