-1

こんにちは、テキストビューの数字に基づいてテキストビューをソートする方法のサンプル例を教えてください。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;

配列をソートし、新しい値を 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);
    }
}
4

2 に答える 2

2

textView を並べ替えるには、まずそれらを配列に入れ、

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

親コンテナへのハンドルがある場合は、 and を使用して配列を簡単に構築できることに注意して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());
于 2012-07-31T15:49:55.743 に答える
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]);
}
于 2012-07-31T15:42:46.577 に答える