【问题标题】:Implementing OnValueChange to a NumberPicker in Android在 Android 中将 OnValueChange 实现为 NumberPicker
【发布时间】:2013-04-05 16:12:00
【问题描述】:

我正在尝试将 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 的唯一原因是因为我必须将主要活动设置为抽象,我的应用程序将无法运行。

【问题讨论】:

    标签: android valuechangelistener numberpicker


    【解决方案1】:

    您将像按钮上的单击侦听器一样执行此操作。

    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 保存操作以在您保存时自动格式化所有代码行。

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

    【讨论】:

    • 比尔莫特你是个天才。感谢您的时间!!!您刚刚停止了一个小时的故障排除!
    • 我们都去过那里。相信我;)当我回顾我早期的一些问题时,我很害怕它们仍然存在供公众消费!
    • 哈哈哈哈哈哈再次感谢。我也很欣赏样式指针。自从我参加编码课程以来已经有很长时间了,我已经忘记了很多类似的事情。我已经实现了一些指针。
    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多