Tôi đang cố gắng nhận các nhấp chuột vào RecyclerView
các mục mà tôi đang sử dụng cơ chế gọi lại. Tôi đã tạo ra giao diện OnItemClickListener
và bên trong Bộ điều hợp tùy chỉnh, tôi đã viết logic để phát hiện nhấp chuột với sự trợ giúp của View.OnClickListener
. Nhưng tôi nhận được một cuộc gọi lại trong myActivity sau khi nhấp đúp vào bất kỳ mục nào trong danh sách. Không nhận được bất kỳ đầu mối gì đang xảy ra ở đây!RecyclerView nhấp chuột duy nhất không hoạt động nhưng hoạt động khi nhấp hai lần
Mã bên trong Hoạt động:
mAdapter = new AppAdapter(this, mAppList, new OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
Toast.makeText(SelectAppActivity.this, "Hello", Toast.LENGTH_SHORT).show();
}
});
recyclerview.setAdapter(mAdapter);
Mã Đối với Giao diện:
public interface OnItemClickListener {
void onItemClick(View v, int position);
}
Mã cho Custom Adapter:
public class AppAdapter extends RecyclerView.Adapter<AppAdapter.ItemViewHolder> {
List<App> mAppList;
List<App> mFilterAppList;
Activity context;
OnItemClickListener onItemClickListener;
public AppAdapter(Activity context, List<App> appList, OnItemClickListener onItemClickListener) {
super();
this.context = context;
this.mAppList = appList;
this.mFilterAppList = appList;
this.onItemClickListener = onItemClickListener;
}
@Override
public ItemViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_app_list, parent, false);
final ItemViewHolder viewHolder = new ItemViewHolder(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onItemClick(v,4);
}
});
return viewHolder;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
final App app = mAppList.get(position);
holder.name.setText(app.getmName());
holder.icon.setImageDrawable(app.getmAppIcon());
}
@Override
public int getItemCount() {
return mAppList.size();
}
public void setFilter(List<App> appList) {
mAppList = new ArrayList<>();
mAppList.addAll(appList);
notifyDataSetChanged();
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
public TextView name;
public ImageView icon;
public ItemViewHolder(View view) {
super(view);
name = (TextView) itemView.findViewById(R.id.app_name);
icon = (ImageView) itemView.findViewById(R.id.app_icon);
}
}
}
'onClick' phương pháp được thực thi trên nhấp chuột duy nhất? –
xin lỗi !! nhưng không hiểu bạn – nlogn
tôi có nghĩa là thêm nhật ký bên trong phương thức onClick của 'view.setOnClickListener' và kiểm tra xem nó có đang gọi mọi lúc hay chỉ trên nhấp đúp chuột –