0

我在 LinearLayout 中垂直创建了 5 个按钮。他们的名字来自 3 种不同语言的字符串资源。因此,按钮并不总是按正确的字母顺序排列。所以这是我的问题。我该怎么做才能使按钮在所有 3 种语言中按字母顺序排序?

Language 1:
String 1 = a,
String 2 = b,
String 3 = d,
String 4 = e,
String 5 = c,

Language 2: 
String 1 = c,
String 2 = e,
String 3 = a,
String 4 = b,
String 5 = d,

Language 3: 
String 1 = d,
String 2 = c,
String 3 = a,
String 4 = b,
String 5 = e,

这是我的代码:

    Button btn1 = new Button(this); 
    btn1.setText(R.string.String1); 
    layout.addView(btn1);

    Button btn2 = new Button(this); 
    btn2.setText(R.string.String2); 
    layout.addView(btn2);

    Button btn3 = new Button(this); 
    btn3.setText(R.string.String3); 
    layout.addView(btn3);

    Button btn4 = new Button(this); 
    btn4.setText(R.string.String4); 
    layout.addView(btn4);

    Button btn5 = new Button(this); 
    btn5.setText(R.string.String5); 
    layout.addView(btn5);

真诚的约翰

4

2 回答 2

2

您可以将按钮放在 TreeMap (这是一个排序的地图)中:

Map<String, Button> map = new TreeMap<String, Button>();

Button btn1 = new Button(this); 
btn1.setText(R.string.String1); 
map.put(R.string.String1, btn1);

Button btn2 = new Button(this); 
btn2.setText(R.string.String2); 
map.put(R.string.String2, btn2);

Button btn3 = new Button(this); 
btn3.setText(R.string.String3); 
map.put(R.string.String3, btn3);

Button btn4 = new Button(this); 
btn4.setText(R.string.String4); 
map.put(R.string.String4, btn4);

Button btn5 = new Button(this); 
btn5.setText(R.string.String5); 
map.put(R.string.String5, btn5);

for (Button b : map.values()) {
    layout.addView(b);
}
于 2012-06-20T11:36:46.187 回答
0
ArrayList<String> strings = new ArrayList<String>();
strings.add(getString(R.string.String1));
strings.add(getString(R.string.String2));
strings.add(getString(R.string.String3));
strings.add(getString(R.string.String4));
strings.add(getString(R.string.String5));

for (String str : Collections.sort(strings)) {
    Button b = new Button(this);
    b.setText(str);
    layout.addView(b);
}

TreeMap是一个不错的选择,但对我来说似乎太过分了,除非您出于某种原因需要在代码中以特定顺序专门跟踪每个按钮/字符串组合。

于 2014-09-24T00:47:17.813 回答