我在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);
此致 约翰
答案 0 :(得分: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);
}
答案 1 :(得分: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
是一个不错的选择,但对我来说似乎过分,除非您出于某种原因需要在代码中以特定顺序专门跟踪每个按钮/字符串组合。