2012-06-20 90 views
0

我在LinearLayout中垂直创建了5个按钮。他们从三种不同语言的字符串资源中获取他们的名字。因此按钮并不总是按照正确的字母顺序。所以这是我的问题。我能做些什么来使按钮按所有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

你可以把你的按钮在一个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); 
} 
+0

我试过了,但应用程序崩溃了。也许有一些缺失? – JohnD

+0

我发现循环中的btn1,btn2,btn3等与其他活动的btn1,btn2,btn3等无关。我怎样才能改变它? – JohnD

+0

我不是Android专家,但如果您的初始代码工作(除了订单),那么这也应该工作。在将它们添加到地图之前,是否为每个按钮保留了'Button btn1 = new Button(this);'和'btn1.setText(R.string.String1);'语句? – assylias

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