2013-04-13 49 views
6

I "m cố gắng để thêm onValueChangeListener để chọn số của tôi (NP1) trong android 4.2.2.thực hiện OnValueChange đến một NumberPicker trong Android

Dưới đây là những gì tôi có cho đến nay

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); 

} 

để thử kiểm tra chức năng của nó Tôi đã sử dụng số này

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

Có ai biết cách dễ dàng để thực hiện người nghe này không ra có hoạt động chính của tôi thực hiện NumberPicker.OnValueChangeListener?

Lưu ý: lý do duy nhất tôi phản đối việc có hoạt động chính của mình là NumberPicker.OnValueChangeListener là vì sau đó tôi phải đặt chính thành abstract và ứng dụng của tôi sẽ không chạy.

Trả lời

11

Bạn sẽ thực hiện việc này giống như trình nghe nhấp chuột trên một nút.

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

Một ví dụ làm việc đầy đủ có thể được tìm thấy ở đây: http://samplecodez.com/android/numberpicker.php

Một số điểm phong cách ...

  • chính nên được vốn hóa và đó là một thực hành tốt để làm cho nó mô tả giống như MainActivity.
  • Chỉ sử dụng các trường khi cần. Tôi đoán bạn không sử dụng hầu hết các biến bên ngoài onCreate() để thay vào đó biến chúng thành các biến cục bộ.
  • Tổng quan TextView là biến được đặt tên tốt nhất của bạn trong lô hàng :) Xem xét sử dụng tên tiết. Bạn sẽ cảm ơn bản thân 6 tháng sau khi bạn nhìn lại đoạn mã này lần đầu tiên trong một thời gian dài.
  • Không có giá trị ma thuật (hoặc Chuỗi)! Tạo một hằng số cho các giá trị tối thiểu và tối đa của bạn và những giá trị đó phải là int cuối cùng riêng tư với các trường của bạn.
  • Trong Eclipse, hãy thiết lập các hành động lưu trong các tùy chọn để tự động định dạng tất cả các dòng mã khi bạn lưu.

Tất nhiên những điều đó sẽ làm cho mã của bạn chạy tốt hơn, nhưng chắc chắn sẽ dễ đọc hơn.

+0

Bill Mote bạn là một thiên tài. Cảm ơn bạn đã dành thời gian!!! Bạn chỉ dừng lại một giờ khắc phục sự cố !! – TheMcMurder

+1

Tất cả chúng ta đều ở đó. Hãy tin tôi đi;) Khi tôi nhìn lại một số câu hỏi ban đầu của tôi, tôi khá sợ rằng họ vẫn ở đó để tiêu thụ công cộng! –

+0

Hahahahaha cảm ơn một lần nữa. Tôi cũng đánh giá cao các con trỏ tạo kiểu. Đã lâu rồi tôi mới học một lớp mã hóa và tôi đã quên rất nhiều thứ như thế. Tôi đã thực hiện một vài gợi ý. – TheMcMurder

Các vấn đề liên quan