Events được hiểu là 1 hành động xảy ra và phải xử lý hành động như thế nào? Ví dụ, khi nhấn vào button hoặc nhấn vào 1 item trên ListView
thì sẽ xảy ra 1 sự kiện.
1 số sự kiện của View
Đa số các View
trong Android đều có các event listener dưới đây:
setOnClickListener
: gọi khiView
được nhấp chuột.setOnDragListener
: gọi khiView
được kéo.setOnFocusChangeListener
: gọi khiView
được thay đổi focus.setOnHoverListener
: gọi khiView
được rê chuột.setOnKeyListener
: gọi khi nhấn phím (hardware input) vàView
được focus.setOnLongClickListener
: gọi khiView
được nhấn và giữ.setOnTouchListener
: gọi khiView
được chạm xuống và chạm lên.
Cách sử dụng Event Listener trong Android
Để sử dụng listener lấy các phương thức trên để đặt bộ lắng nghe sự kiện và xử lý công việc được implement của interface.
Ví dụ về event listener khi nhấn vào button
Trong file XML:
<Button
android:id="@+id/btn_show"
android:text="Show"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Trong file Java:
Button btnShow = (Button)findViewById(R.id.btn_show);
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO something
}
});
Phương thức setOnClickListener()
đặt bộ lắng nghe sự kiện, và interface OnClickListener
là định nghĩa cho 1 callback trong phương thức onClick(View v)
được gọi khi 1 button được nhấp.
1 event listener là 1 interface trong lớp View chứa 1 phương thức callback. Có thử tạo View và gõ view.setOn
, Android Studio sẽ thể hiện tất cả các event listener của View đó.

1 số Event thường dùng
Button
Button
thường dùng nhất là sự kiện onClick()
, ngoài ra có thể thử các sự kiện khác để hiểu rõ thêm.
EditText
EditText
có 1 số sự kiện như dưới đây:
addTextChangedListener
: xảy ra mỗi lần khi văn bản củaEditText
thay đổi.setOnEditorActionListener
: xảy ra khi có 1 hành động trên bàn phím được nhấn.
Ví dụ sử dụng addTextChangedListener
:
EditText etValue = (EditText) findViewById(R.id.etValue);
etValue.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Fires right as the text is being changed (even supplies the range of text)
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Fires right before text is changing
}
@Override
public void afterTextChanged(Editable s) {
// Fires right after the text has changed
tvDisplay.setText(s.toString());
}
});
ListView
Các event listener thường sử dụng với ListView
được mô tả chi tiết như sau:
setOnItemClickListener
: được gọi khi 1 item trênListView
được nhấp vào.setOnItemLongClickListener
: được gọi khi 1 item trênListView
được nhấp vào và giữ.setOnItemSelectedListener
: được gọi khi item được chọn.
Ví dụ:
lvPlace.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO something
}
});
lvPlace.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// TODO something
return false;
}
});
lvPlace.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// TODO something
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO something
}
});