操纵两个Numberpickers Android的值

时间:2014-09-19 16:43:03

标签: android eclipse numberpicker

我正在尝试制作应用来跟踪出勤率。为此,我使用数字选择器。

这是代码

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.EditText;
import android.widget.NumberPicker;
import android.widget.NumberPicker.OnValueChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {

NumberPicker np1,np2;
TextView tv1,tv3,tv2;
EditText et1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    np1 = (NumberPicker) findViewById(R.id.numberPicker1);
    np2 = (NumberPicker) findViewById(R.id.numberPicker2);
    et1 = (EditText) findViewById(R.id.editText1);
    tv1 = (TextView) findViewById(R.id.textView1);
    tv2 = (TextView) findViewById(R.id.textView2);
    tv3 = (TextView) findViewById(R.id.textView3);


    np1.setMinValue(0);
    np1.setMaxValue(50);
    np1.setWrapSelectorWheel(true);
    np2.setMinValue(0);
    np2.setMaxValue(50);
    np2.setWrapSelectorWheel(true); 

    np1.setOnValueChangedListener(new OnValueChangeListener() {

    @Override
    public void onValueChange(NumberPicker picker, int oldValb, int newValb) {

        tv3.setText("Bunked Lecs "+ newValb);

    }

});

    np2.setOnValueChangedListener(new OnValueChangeListener() {

        @Override
        public void onValueChange(NumberPicker picker, int oldValt, int newValt) {

            tv2.setText("Total  Lecs "+ newValt);


        }
    });

    tv1.setOnLongClickListener(new OnLongClickListener() {

        public boolean onLongClick(View v) {
            tv1.setVisibility(4);
            final EditText et1=(EditText)findViewById(R.id.editText1);
            et1.setVisibility(1);                       
            return false;

        }
    });
}
}

我需要做的是每当用户更改数字选择器中的值时计算并打印(1-newValb/newVal)。 我怎么能实现这个目标呢?

或者我应该在此代码中做出哪些更改

1 个答案:

答案 0 :(得分:0)

我认为它比我初想的更容易:

public void updateResult() {
    int newValb = np1.getValue();
    int newValt = np2.getValue();

    float result = 1 - newValb / newValt;

    tv1.setText(String.valueOf(result));
}

np1.setOnValueChangedListener(new OnValueChangeListener() {

    @Override
    public void onValueChange(NumberPicker picker, int oldValb, int newValb) {
        updateResult();
    }

});

np2.setOnValueChangedListener(new OnValueChangeListener() {

    @Override
    public void onValueChange(NumberPicker picker, int oldValt, int newValt) {
        updateResult();
    }
});

或者我完全误解了你?