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ですか? IDまたは位置? – tachyonflux
fuch viewholder code -1はIDです。位置は正常です。 –