Nếu tất cả các nút có chức năng tương tự chỉ khác nhau trong thông số có thể nhận dạng được, tốt hơn nên tạo một người nghe và gán nó cho tất cả các nút.
Vị trí của người nghe phụ thuộc vào phạm vi biến mà nó cần sử dụng. Nếu nó cần sử dụng một số biến phương thức, nó phải được tạo bên trong phương thức, nếu nó sử dụng một thành viên lớp, nó sẽ được tạo bên trong lớp đó.
Ví dụ, nếu bạn có mười nút mà mỗi nên bắt đầu một hoạt động khác nhau, bạn có thể tạo bản đồ về quan điểm và hoạt động, và trong người nghe tài trợ cho các hoạt động thích hợp để bắt đầu:
Map<View, Class<?>> viewActivityMap = new HashMap<View, Class<?>>();
// fill it somewhere
// in onCreate
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Class<?> classToStart = viewActivityMap.get(v);
Intent intent = new Intent(YourActivity.this, classToStart);
startActivity(intent);
}
}
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
Trong trường hợp của người nghe, lý do thực sự duy nhất tôi thấy để tạo ra một lớp bên trong, là nếu bạn muốn tạo một hàm tạo nhận các tham số khác với các hàm tạo lớp/giao diện được triển khai thực hiện.
Bất cứ điều gì phù hợp với bạn !! ... Tôi sẽ đề xuất cho một lớp bên trong có tên, nếu bạn muốn có một mã có cấu trúc ... –