public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {
holder.tvItem.setText(itemList.get(position).getmTitle());
Picasso.get().load(itemList.get(position).geturl()).into(holder.imgFlag);
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ModelClass model= itemList.get(position);
}
});
答案 0 :(得分:1)
以下是一个示例,您可以按照自己的要求进行操作并使其符合您的要求-
在适配器中创建接口
public interface OnItemClickListener {
void onItemClicked(int position, Object object);
}
在您的适配器呼叫中
Adapter adapter = new Adapter(context, list, new Adapter.OnItemClickListener() {
@Override
public void onItemClicked(int position, Object object) {
// Handle Object of list item here
}
});
在适配器上
private OnItemClickListener onItemClickListener; // Global scope
在构造函数调用中:
this.onItemClickListener = onItemClickListener;
关于您的项目点击事件:
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemClickListener.onItemClicked(position, _list.get(position));
}
});
答案 1 :(得分:0)
您可以将此视图用于单视图和多视图单击
适配器查看器类
公共类MyViewHolder扩展了RecyclerView.ViewHolder的实现
View.OnClickListener {
CircleImageView imgPlayer;
TextView playerRole;
public MyViewHolder(View itemView) {
super(itemView);
imgPlayer = itemView.findViewById(R.id.trnmt_player);
playerRole = itemView.findViewById(R.id.pRole_id);
playerRole .setOnClickListener(this);
imgPlayer.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == imgPlayer) {
onItemClickListener.onItemClicked(position,list.get(position));
} else if(v==playerRole){
}
}
}
}
界面
public interface OnItemClickListener {
void onItemClicked(int position, Object object);
}
内部适配器
private OnItemClickListener onItemClickListener;
答案 2 :(得分:0)
如果提供一些代码快照,将会很有帮助。
尽管您可以在活动的“回收者”视图上获得单击操作的回调。因此,为此,您需要创建自己的侦听器并将其设置为“自定义”适配器。
创建动作侦听器
public interface ActionListener<T> {
void onClickAction(int positionOfItem, T object);//here T will be the type of object bound to your view.
}
现在在您的自定义适配器中创建一个方法来设置此侦听器
private ActionListener mListener;
public void setActionListener(ActionListener listener){
mListener = listener;
}
现在使用此侦听器从适配器导航回叫。
public void onBindViewHolder(@NonNull final myViewHolder holder, final int position) {
holder.tvItem.setText(itemList.get(position).getmTitle());
Picasso.get().load(itemList.get(position).geturl()).into(holder.imgFlag);
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ModelClass model= itemList.get(position);
listener.onClickAction(position, model);//this will pass the call to the listener.
}
});
}
现在在刚刚创建适配器实例的活动类中将侦听器设置为适配器。在这里,您需要在片段中调用一个方法。要获取片段,可以使用findFramgentById() or findFragmentByTag()方法。
adapter.setActionListener(new ActionListener<ModelClass>(){
void onClickAction(int positionOfItem, ModelClass object){
MyFragment fragment = (MyFragment) getSupportFragmentManager().findFragmentByTag();
fragment.updateActionData(object);
}
});
请在您的片段中创建一个方法,如下所示:
public void updateActionData(ModelClass object){
//to do your work with object
}
希望这会起作用。