Android:在CardView中的ImageView上添加clicklistener
在我的RecyclerView.Adapter上:Android:在CardView中的ImageView上添加clicklistener,android,android-recyclerview,Android,Android Recyclerview,在我的RecyclerView.Adapter上: @Override public void onBindViewHolder(WorkoutViewHolder viewHolder, int i) { .... viewHolder.mCreatorAvatar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
@Override
public void onBindViewHolder(WorkoutViewHolder viewHolder, int i) {
....
viewHolder.mCreatorAvatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "AVATAR", Toast.LENGTH_SHORT).show();
}
});
在包含RecyclerView的片段父级上:
mRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(BrowseSessionsFragment.this.getActivity(),
mRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// do whatever
Toast.makeText(BrowseSessionsFragment.this.getActivity(), "ITEM" + position,
Toast.LENGTH_SHORT).show();
}
问题是:当我单击ImageView时,有两条消息:
然后是阿凡达;在这种情况下,如何仅触发化身消息
谢谢大家 如果需要为RecyclerView创建McClickListener,则必须创建自己的接口,例如
public interface OnItemClick {
void onItemClick(int position);
}
之后,只需在活动/片段中实现它,并将其设置为adapter。
在adapter set OnClickListener for element中,您需要在ViewHolder中使用它,并将列表项的位置指定给界面,例如
static class ViewHolder extends RecyclerView.ViewHolder {
ImageView mCreatorAvatar;
public ViewHolder(View itemView, final OnItemClick onItemClick) {
super(itemView);
//...some code...
mCreatorAvatar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onItemClick != null){
onItemClick.onItemClick(getAdapterPosition());
}
}
}
}
在实现接口的活动/片段中
public void onItemClick(int position) {
//do smth
}
如果您想接收对完整列表项的单击,请以类似的方式再次单击ViewHolder中的itemView删除addOnItemTouchListenerNot!因为我想防止卡被点击后进行处理。问题是相同的Viktor。@anthony您应该删除OnItemTouchListener并将OnItemClick设置为适配器中的itemView。实际上,我想允许:单击使用OnItemTouchListener完成的完整项目,只需单击avatar imageview即可。@anthony您可以通过两次单击来允许它:第一次单击ItemView,第二次单击avatar imageview