私は、カードビューのリサイクルビューを持っており、各カードビューにはサムズアップ(like)ボタンがあります。Handling RecyclerView要素内のアイテムをOnClickしますか?
ユーザーが特定のカードの親指ボタンをクリックすると、そのポストが「好き」になり、ボタンがアニメーション化され、適切なロジックが処理されるようにしたいと思います。ここで
は、これまでの私のコードです:
private class CardViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private CardView mCardView;
private TextView cardTitle, cardUsername;
private ImageView cardImage;
public CardViewHolder(View itemView){
super(itemView);
mCardView = (CardView) itemView.findViewById(R.id.cardview);
cardTitle = (TextView) itemView.findViewById(R.id.cardTitle);
cardUsername = (TextView) itemView.findViewById(R.id.cardUsername);
cardImage = (ImageView) itemView.findViewById(R.id.cardImage);
mLikeButton = (LikeButton) itemView.findViewById(R.id.thumb);
itemView.setOnClickListener(this);
mLikeButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == mLikeButton.getId()){
Toast.makeText(v.getContext(), "ITEM PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(v.getContext(), "ROW PRESSED = " + String.valueOf(getAdapterPosition()), Toast.LENGTH_SHORT).show();
Toast.makeText(v.getContext(), mRecipes[getAdapterPosition()].getRecipename().toString(), Toast.LENGTH_SHORT).show();
}
}
}
ユーザーのようなボタンをクリックすると、それはトーストで正しいアダプタの位置を表示していますが、それが必要のように、それがアニメーション化しないと、私は方法がありませんその上にアニメーションを設定します。通常、ボタンはクリックされるとアニメートされますが、それがrecyclerview内にあるときは動作しません。
私は
(LikeButton) v.setLiked(true);
を実行しようとしましたが、キャストが動作していないようでした。私はそれについてのメソッドを呼び出すことができるように、recyclerviewの特定の行の特定のボタンのような直接参照を取得できるようにしたいと思います。それは可能ですか?
これは、クリックリスナーをボタンに設定する悪い方法ですか?
onBindViewHolderメソッドのクリックリスナーで設定します。 –