Я хочу настроить обработчики кликов для просмотра в строке RecyclerView. Я хочу обрабатывать щелчок элемента из фрагмента. Я попытался закодировать его на this tutorial. Но когда я пытаюсь определить, какое представление было нажато, оно возвращает -1.RecyclerVIew OnItemClick return -1
У меня внутри внутри адаптера.
public interface OnItemClickListener {
void onItemClick(View itemView, int position);
}
public void setOnItemClickListener(OnItemClickListener listener) {
this.mOnItemClickListener = listener;
}
Тогда внутри конструктора ViewHolder я называю это:
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(v, getLayoutPosition());
}
}
});
И здесь в последний раз та часть, когда я установить слушатель из моего фрагмента:
mFollowingAdapter.setOnItemClickListener(new FollowingAdapter.OnItemClickListener() {
@Override
public void onItemClick(View itemView, int position) {
Log.d(Constants.TAG, itemView.getId() + " " + position);
}
});
Полного VIewHolder кода:
public class ViewHolder extends RecyclerView.ViewHolder {
private ImageView request_author_profile;
private TextView request_name;
private ImageView request_accept;
private ImageView request_decline;
public ViewHolder(final View itemView) {
super(itemView);
request_author_profile = (ImageView) itemView.findViewById(R.id.profile_image);
request_name = (TextView) itemView.findViewById(R.id.request_name);
request_decline = (ImageView) itemView.findViewById(R.id.btn_request_decline);
request_accept = (ImageView) itemView.findViewById(R.id.btn_request_accept);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
mOnItemClickListener.onItemClick(itemView, getLayoutPosition());
}
}
});
}
}
Спасибо за помощь.
Пожалуйста, внесите код ViewHolder. –
Что такое -1? идентификатор или позиция? – tachyonflux
обновленный полный код зрителя -1 - это идентификатор, позиция работает –