按字母顺序排序按钮

时间:2012-06-20 11:31:01

标签: android sorting button

我在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);

此致 约翰

2 个答案:

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