2012-06-20 283 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是一個不錯的選擇,但似乎對我來說過分,除非你出於某種原因需要特定地跟蹤每個按鈕/字符串組合中的代碼的特定順序。