0

私はメニューインフレータを使用し、すべての行でテキストビューとシークバーに i の ID を与えます (for ループを使用してそこに ID を与えます)。シークバーのIDを取得し、テキストビューにテキストを挿入したいとき。私が抱えている問題は、シークバーと同じ値を持つテキストビューにテキストを設定する方法です。

public static void setNewTipAmount(SeekBar barChanged, double amountForTip) {

 int getID = barChanged.getId(); //get seekbar id


    TextView textView = tipPerPerson.findViewById(getID);// get the textview with same id
            textView.setText("Hello");

}

}

Idの割り当て方法のコードは次のとおりです

        for (int i = 0; i < InBetweenUIAndBusinessLogic.getGuests(); i++) {
        View v = in.inflate(R.layout.row_per_person, table, false);
        double tipPerIndividual = (Math.round(InBetweenUIAndBusinessLogic
                .getTipPerPerson() * 100.0) / 100.0);
        String tip = Double.toString(tipPerIndividual);
        tipPerPerson = (TextView) v.findViewById(R.id.tipPerPerson);
        tipPerPerson.setId(i);
        tipPerPerson.setText(tip);
        rows.add(tipPerPerson);
        percentageTip = (SeekBar) v.findViewById(R.id.seekBar1);
        percentageTip.setOnSeekBarChangeListener(new myListener());
        double guests = InBetweenUIAndBusinessLogic.getGuests();
        percentageTip.setProgress((int) (100 / guests));
        percentageTip.setId(i);
        table.addView(v);
        bars.add(percentageTip);

    }
4

1 に答える 1

1

TextViewid とidの間の単純なマッピングを作成することをお勧めしSeekbarます。このようにして、各 ID は異なりますが、対応するアイテム ID を取得できます。これが私の解決策です:

mGuestCount = InBetweenUIAndBusinessLogic.getGuests();

for (int i = 0; i < InBetweenUIAndBusinessLogic.getGuests(); i++) {
    View v = in.inflate(R.layout.row_per_person, table, false);
    double tipPerIndividual = (Math.round(InBetweenUIAndBusinessLogic
        .getTipPerPerson() * 100.0) / 100.0);
    String tip = Double.toString(tipPerIndividual);
    tipPerPerson = (TextView) v.findViewById(R.id.tipPerPerson);
    tipPerPerson.setId(i);
    tipPerPerson.setText(tip);
    rows.add(tipPerPerson);
    percentageTip = (SeekBar) v.findViewById(R.id.seekBar1);
    percentageTip.setOnSeekBarChangeListener(new myListener());
    double guests = InBetweenUIAndBusinessLogic.getGuests();
    percentageTip.setProgress((int) (100 / guests));
    percentageTip.setId(i + mGuestCount);
    table.addView(v);
    bars.add(percentageTip);
}

テキストビューを見つけるには:

public static void setNewTipAmount(SeekBar barChanged, double amountForTip) {
    int getID = barChanged.getId(); //get seekbar id

    TextView textView = tipPerPerson.findViewById(getID - mGuestCount);// get the textview with corresponding id
    textView.setText("Hello");
}
于 2013-10-23T02:41:42.867 に答える