Tôi biết có rất nhiều câu trả lời, nhưng tôi nghĩ tôi cũng có thể cung cấp cho mình việc thực hiện nó. (Chi tiết đầy đủ có thể được tìm thấy trên một câu hỏi khác tôi đã trả lời ).
Vì vậy, để thêm một trình nghe nhấp chuột, ViewHolder
lớp bên trong của bạn cần phải thực hiện View.OnClickListener
. Đây là bởi vì bạn sẽ thiết lập một OnClickListener
đến itemView
tham số của ViewHolder
constructor 's. Hãy để tôi chỉ cho bạn những gì tôi có nghĩa là:
public class ExampleClickViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView text1, text2;
ExampleClickViewHolder(View itemView) {
super(itemView);
// we do this because we want to check when an item has been clicked:
itemView.setOnClickListener(this);
// now, like before, we assign our View variables
title = (TextView) itemView.findViewById(R.id.text1);
subtitle = (TextView) itemView.findViewById(R.id.text2);
}
@Override
public void onClick(View v) {
// The user may not set a click listener for list items, in which case our listener
// will be null, so we need to check for this
if (mOnEntryClickListener != null) {
mOnEntryClickListener.onEntryClick(v, getLayoutPosition());
}
}
}
Những thứ khác bạn cần thêm là một giao diện tùy chỉnh cho Adapter
phương thức setter của bạn và:
private OnEntryClickListener mOnEntryClickListener;
public interface OnEntryClickListener {
void onEntryClick(View view, int position);
}
public void setOnEntryClickListener(OnEntryClickListener onEntryClickListener) {
mOnEntryClickListener = onEntryClickListener;
}
Vì vậy, hỗ trợ nhấp chuột mới của bạn Adapter
đã hoàn tất.
Bây giờ, hãy sử dụng nó ...
ExampleClickAdapter clickAdapter = new ExampleClickAdapter(yourObjects);
clickAdapter.setOnEntryClickListener(new ExampleClickAdapter.OnEntryClickListener() {
@Override
public void onEntryClick(View view, int position) {
// stuff that will happen when a list item is clicked
}
});
Về cơ bản, đó là cách bạn sẽ thiết lập một bình thường Adapter
, ngoại trừ việc bạn sử dụng phương thức setter mà bạn đã tạo để kiểm soát những gì bạn sẽ làm khi người dùng của bạn nhấp vào một mục danh sách cụ thể.
Bạn cũng có thể xem qua một tập hợp các ví dụ tôi đã thực hiện trên GistHub này trên GitHub:
https://gist.github.com/FarbodSalamat-Zadeh/7646564f48ee708c1582c013e1de4f07