Html.fromHtml()文本格式和多维数组

时间:2014-01-24 19:05:05

标签: android arrays string

我正在处理的应用程序非常重,并且有一些可扩展列表,因此我使用多维数组来填充子视图。 我想加粗文本的某些部分,如下所示: 示例1:这是一个示例。 所以要做到这一点,我在strings.xml中有这个:

<string name="example"><![CDATA[<b>Example 1:</b> This is an example.]]></string>

到我的适配器:

CharSequence example = Html.fromHtml(getString(R.string.example);

想象一下那些,然后我把它们装进我的阵列中:

private CharSequence [][] childview = { 
   {example, example1, example2, example3};
   {example4, example5, example6, example7};
};

问题是,要创建一大堆变量,必须有更好的方法吗?我可以将我的字符串变成字符串数组并使用Html.fromHtml格式将它们装入多维数组中吗?

1 个答案:

答案 0 :(得分:0)

你可以写一点实用方法:

public CharSequence [][] fromRes(int[][] resIdMatrix) {
    CharSequence[][] result = new CharSequence[resIdMatrix.length][];
    int i = 0;
    for (int[] resIds : resIdMatrix) {
        CharSequence[] row = result[i++] = new CharSequence[resIds.length];
        int j = 0;
        for (int id : resIds) {
            row[j++] = Html.fromHtml(getString(id));
        }
    }
    return result;
}

然后使用二维资源ID数组调用它:

int[][] resIds = {
    {R.string.example, R.string.example1, R.string.example2, R.string.example3},
    {R.string.example4, R.string.example5, R.string.example6, R.string.example7},
};
CharSequence[][] childview = fromRes(resIds);