在Android中实现OnValueChange到NumberPicker

时间:2013-04-13 01:13:35

标签: android valuechangelistener numberpicker

我正在尝试将onValueChangeListener添加到android 4.2.2中的数字选择器(np1)。

这是我到目前为止所拥有的

public class main extends Activity  {
ViewFlipper vf = null;
HttpClient client = null;
private ArrayList<String> captionList = new ArrayList<String>();
ListView lv = null;
private String custid = null;
ImageView iv = null;
private int vfloginview = 0;
private int vflistview = 0;
private boolean vfsentinal = false;
NumberPicker np1 = null;
TextView totalcost = null;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mystuffmobile);
    vf = (ViewFlipper) findViewById(R.id.vf);
    client = new DefaultHttpClient();
    lv = (ListView) findViewById(R.id.lv);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    np1 = (NumberPicker) findViewById(R.id.np1);
    np1.setMinValue(1);
    np1.setMaxValue(400);
    //np1.setOnValueChangedListener;    
    //np1.setOnValueChangedListener(onValueChange);

}

试图测试它的功能我一直在使用这个

public void onValueChange (NumberPicker np1, int oldVal, int newVal) {
    Log.v("NumberPicker", np1.getValue() +"");
}

有没有人知道一种简单的方法来实现这个监听器而不让我的主要活动实现NumberPicker.OnValueChangeListener?

注意:我反对让我的主要活动实现NumberPicker.OnValueChangeListener的唯一原因是因为我必须将main设置为abstract而我的应用程序将不会运行。

1 个答案:

答案 0 :(得分:12)

你就像按钮上的点击监听器一样。

np1.setOnValueChangedListener(new OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        // do something here
    }
});

可在此处找到完整的示例:http://samplecodez.com/android/numberpicker.php

一些风格点......

  • Main应该大写,并且使其更具描述性,如MainActivity,这是一种很好的做法。
  • 仅在必要时使用字段。我猜你没有使用onCreate()之外的大部分变量,所以要改为使用局部变量。
  • TextView totalCost是您最好的命名变量:)考虑使用详细名称。很长一段时间以来第一次回顾这段代码,6个月后你会感谢自己。
  • 没有神奇的价值(或字符串)!为你的最小值和最大值创建一个常量,那些应该是你的字段的私有静态final int。
  • 在Eclipse中设置优先级中的java保存操作,以便在保存时自动格式化所有代码行。

当然,这些都不会让你的代码运行得更好,但肯定会更容易阅读。