动态分配ressource与big switch case

Don*_*Don 1 performance android switch-statement

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

我需要做的是相当简单,我想动态地为字符串ressource分配一个文本值,具体取决于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;
    }
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢,祝你有个美好的一天

use*_*305 5

简单,

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"); 
 }
Run Code Online (Sandbox Code Playgroud)

现在,没有切换案例和比较,基本的Java和Android基础知识使它变得简单和简短..

作为R.string.XXX是一种int value在生成的R.java文件,你不得不做出这样的价值观的公正int数组,只是用你得到的值int messagesCategory.并直接将其设置为TextView..