Mik*_*koP 21 android onclicklistener android-cardview android-5.0-lollipop
如何附加OnClickListener到CardView?我希望每张卡片在点击时都有不同的动作.
我有一个RecyclerView用于显示卡片的自定义适配器.这就是它的实现方式.
And*_*s K 36
您应该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);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这是我对这个问题的解决方案:
首先在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
}
}
Run Code Online (Sandbox Code Playgroud)接下来,在方法中onBindViewHolder(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
}
});
Run Code Online (Sandbox Code Playgroud)它对我很有用,希望对其他人有帮助。
| 归档时间: |
|
| 查看次数: |
65747 次 |
| 最近记录: |