-3

したがって、私が達成しようとしていることは、まさに次のようになるはずです: http://www.javascriptbank.com/simple-javascript-auto-sum-with-checkboxes.html/en/

残念ながら、それが可能かどうかはわかりませんので、どんな種類の助けやアイデアもいただければ幸いです。前もって感謝します。私がこれまでに持っているいくつかのこと:

CheckBox chkone;
CheckBox chktwo;
CheckBox chkthree;
TextView tv;
OnClickListener checkBoxListener;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    chkone = (CheckBox)findViewById(R.id.chk1);
    chktwo = (CheckBox)findViewById(R.id.chk2);
    thkthree = (CheckBox)findViewById(R.id.chk3);


checkBoxListener = new OnClickListener() {

        //@Override
        public void onClick(View v) {

            tv = (TextView)findViewById(R.id.tv1);

            if (chkone.isChecked())
            {   
              // something

            }

        }
    };

    chkone.setOnClickListener(checkBoxListener);
    chktwo.setOnClickListener(checkBoxListener);
    chkthree.setOnClickListener(checkBoxListener);
4

1 に答える 1

0

CompoundButton's OnCheckedChangeListenerチェックボックスの状態の変化に関する通知を受け取るには、代わりにインターフェイスを実装する必要があります。

数値をどこかに格納して作業を容易にするためにクラスを拡張しなかったと仮定すると、そのCheckBox値にアクセスするためにチェックボックスのラベル (テキスト) を解析し、チェックされた状態に基づいて合計を増減する必要があります。 :

private TextView sumText;
private float currentSum = 0;
private final OnCheckedChangeListener checkBoxListener = 
    new OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (isChecked)
            currentSum += getNumber(buttonView);
        else
            currentSum -= getNumber(buttonView);
        // TODO: you need to initialize this TextView in your
        // onCreate method!
        sumText.setText(Float.toString(currentSum));
    }
};

private float getNumber(final CompoundButton chk)
{
    try
    {
        return Float.parseFloat(chk.getText().toString());
    }
    catch (NumberFormatException e)
    {
        return 0;
    }
}

これが期待どおりに機能するようにするには、getNumberメソッドを変更して、実際にそのCheckBoxインスタンスの下にある値を取得する必要があることに注意してください。

于 2012-05-21T19:06:32.830 に答える