OnClickListener
を にアタッチするにはどうすればよいCardView
ですか? クリックしたときにすべてのカードに異なるアクションを持たせたい.
RecyclerView
カードを表示するためのカスタム アダプターを備えた があります。これが実装方法です。
OnClickListener
を にアタッチするにはどうすればよいCardView
ですか? クリックしたときにすべてのカードに異なるアクションを持たせたい.
RecyclerView
カードを表示するためのカスタム アダプターを備えた があります。これが実装方法です。
クラスにを実装しOnItemClickListener
、ViewHolder
現在の項目をViewHolder
すべてのインスタンスに渡す必要がありますonBindViewHolder()
。
この投稿から:
public static class ViewHolder extends RecyclerView.ViewHolder {
public View view;
public Item currentItem;
public ViewHolder(View v) {
super(v);
view = v;
view.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// item clicked
}
});
}
}
@Override public void onBindViewHolder(ViewHolder viewHolder, int i) {
viewHolder.currentItem = items.get(i);
}
これは、この問題に対する私の解決策です:
まず、ViewHolder クラスに View ビュー オブジェクトへの参照を追加します。
public static class TouristViewHolder extends RecyclerView.ViewHolder{
public ImageView img;
public TextView name;
public TextView description;
public RatingBar rating;
public View view; // <----- here
public TouristViewHolder(final View view) {
super(view);
this.view = view; // <----- here
// ... rest of code
}
}
次に、 methodonBindViewHolder(final MyViewHolder holder, final int position)
でリスナーを追加し、 new を設定しIntent
ます。
@Override
public void onBindViewHolder(TouristViewHolder touristViewHolder, final int position) {
touristViewHolder.view.setOnClickListener(new View.OnClickListener() { // <--- here
@Override
public void onClick(View v) {
Log.i("W4K","Click-"+position);
context.startActivity(new Intent(context,MainActivity.class)); // <--- here
}
});
それは私にとってはうまくいきます。他の誰かに役立つことを願っています。
onBindViewHolderに必要なアイテムであるonClickリスナーを追加するだけです。その位置の値に簡単にアクセスできます。以下のコードを確認してください。
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
holder.title.setText(Html.fromHtml(html2text(results.get(position).getTitle().toString())));
holder.description.setText(Html.fromHtml(html2text(results.get(position).getSummary().toString())));
holder.url.setText(Html.fromHtml(html2text(results.get(position).getUrl().toString())));
holder.url.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(mContext, DetailsActivity.class);
intent.putExtra("url",results.get(position).getUrl().toString());
mContext. startActivity(intent);
}
});
こんにちは、これはうまくいきました:
cardView=findViewById(R.id.cardView);
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"clicked",Toast.LENGTH_SHORT).show();
}
});