2012-07-31 26 views
-1

嗨,有人可以給我一個示例,說明如何根據textviews中的數字對textviews進行排序。我能夠從TextView中得到文本,需要先排序並放置最小的數字。如何在TextViews中對數字進行排序並顯示它們?

謝謝。

public void sortNumbers(View v) { 

    String[] numbers = new String[7]; 
    numbers[0] = textView23.getText().toString(); 
    numbers[1] = textView33.getText().toString(); 
    numbers[2] = textView43.getText().toString(); 
    numbers[3] = textView53.getText().toString(); 
    numbers[4] = textView63.getText().toString(); 
    numbers[5] = textView73.getText().toString(); 
    numbers[6] = textView83.getText().toString(); 

    Integer[] intValues = new Integer[numbers.length]; 
    for (int i = 0; i < numbers.length; i++) { 
     intValues[i] = Integer.parseInt(numbers[i].trim()); 
    } 
    Collections.sort(Arrays.asList(intValues)); 

    for (int i = 0; i < intValues.length; i++) { 
     Integer intValue = intValues[i]; 

     //here I want to assign sorted numberes to the TextViews 


    } 

} 

所以我跟了傑弗裏的建議。這是仍然無法正常工作的代碼。什麼可能是錯的?

創建TextViews數組:

TextView[] tvs = new TextView[7]; 

    tvs[0] = textView23; 
    tvs[1] = textView33; 
    tvs[2] = textView43; 
    tvs[3] = textView53; 
    tvs[4] = textView63; 
    tvs[5] = textView73; 
    tvs[6] = textView83; 

排序的數組和assinged新值TextViews:

Arrays.sort(tvs, new TVTextComparator()); 

    textView23.setText(tvs[0].getText().toString()); 
    textView33.setText(tvs[1].getText().toString()); 
    textView43.setText(tvs[2].getText().toString()); 
    textView53.setText(tvs[3].getText().toString()); 
    textView63.setText(tvs[4].getText().toString()); 
    textView73.setText(tvs[5].getText().toString()); 
    textView83.setText(tvs[6].getText().toString());  

這裏是Comporator類:

public class TVTextComparator implements Comparator<TextView> { 
    public int compare(TextView lhs, TextView rhs) { 

     Integer oneInt = Integer.parseInt(lhs.getText().toString()); 
     Integer twoInt = Integer.parseInt(rhs.getText().toString()); 

     return oneInt.compareTo(twoInt); 
    } 
} 
+0

'youtTextView.setText( 「」 +的intValue);' – MAC 2012-07-31 15:31:20

+0

它不是清楚你在問什麼。你是否希望文本視圖按照排序順序在屏幕上呈現? – 2012-07-31 15:37:06

+0

這些數字按升序排列。所以textView23應該顯示最低的數字,而textView83應該顯示最高的數字。我怎麼做? – 2012-07-31 15:40:12

回答

2

對您的textViews進行排序把它們放在一個陣列,

TextView[] tvs = new TextView[7]; 
tvs[0] = textView23; 
tvs[1] = textView33; 
// and so on 

注意的是,如果你有句柄父容器,你可以很容易地通過使用ViewGroup.getChildCount()getChildAt()建立數組。

現在寫文本視圖的比較器,

class TVTextComparator implements Comparator<TextView> { 
    @Override 
    public int compare(TextView lhs, TextView rhs) { 
    return lhs.getText().toString().compareTo(rhs.getText().toString()); 
    // should check for nulls here, this is NOT a robust impl of compare() 
    } 
} 

現在使用的比較器,以對數組進行排序,

Arrays.sort(tvs, 0, tvs.length, new TVTextComparator()); 
+0

我收到此錯誤消息 - 方法compareTo(CharSequence)是未定義的類型CharSequence。我該如何解決它?另一個問題是我可以使用ArrayList 而不是TextView []嗎? – 2012-07-31 17:41:56

+0

公共類TVTextComparator實現比較 { \t公衆詮釋比較(TextView的LHS,TextView的RHS){ \t \t整數oneInt =的Integer.parseInt(lhs.getText()的toString()); \t \t Integer twoInt = Integer.parseInt(rhs.getText()。toString()); \t \t return(oneInt.compareTo(twoInt)); \t} } – 2012-07-31 20:58:43

0
public void sortNumbers(View v) { 

String[] numbers = new String[7]; 
numbers[0] = textView23.getText().toString(); 
numbers[1] = textView33.getText().toString(); 
numbers[2] = textView43.getText().toString(); 
numbers[3] = textView53.getText().toString(); 
numbers[4] = textView63.getText().toString(); 
numbers[5] = textView73.getText().toString(); 
numbers[6] = textView83.getText().toString(); 

Integer[] intValues = new Integer[numbers.length]; 
for (int i = 0; i < numbers.length; i++) { 
    intValues[i] = Integer.parseInt(numbers[i].trim()); 
} 
Collections.sort(Arrays.asList(intValues)); 

    textView23.setText(intValues[0]); 
    textView33.setText(intValues[1]); 
    textView43.setText(intValues[2]); 
    textView53.setText(intValues[3]); 
    textView63.setText(intValues[4]); 
    textView73.setText(intValues[5]); 
    textView83.setText(intValues[6]); 
} 
+0

第二個for循環的目的是什麼? – 2012-07-31 18:33:02

+0

不需要。我沒有觀察到它。只是刪除它 – 2012-08-01 02:53:37

相關問題