单击 RecyclerView 项目中的每个按钮
Onclick for each button inside RecyclerView items
如何获取 RecyclerView 项目中点击按钮的位置
这是我的 onBindViewHolder :
public void onBindViewHolder(MyViewHolder holder, int position) {
Masar masar=masrList.get(position);
holder.masarName.setText(masar.getMasarTitle());
holder.masarDesc.setText(masar.getMasarDescreption());
//How to get the Position
holder.masarImg.setImageResource(masar.getMasarImg());
holder.mapBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
//if you need position, just use recycleViewHolder.getAdapterPosition();
Intent intent = new Intent(v.getContext(), MapsActivity.class);
mContext.startActivity(intent);
}
});
}
使用holder.getAdapterPosition();
public void onBindViewHolder(final MyViewHolder holder, int position) {
Masar masar=masrList.get(position);
holder.masarName.setText(masar.getMasarTitle());
holder.masarDesc.setText(masar.getMasarDescreption());
//How to get the Position
holder.masarImg.setImageResource(masar.getMasarImg());
holder.mapBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
Toast.makeText(getContext(), "The position is: "+holder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(v.getContext(), MapsActivity.class);
mContext.startActivity(intent);
}
});}
如果你需要在 onBindViewHolder 中才可以使用
holder.getAdapterPosition();
如果您需要在 activity 和片段中单击此位置,则必须使用从 holder 到 activity 和片段的回调,并且必须传递相同的 getAdapterPosition();
编辑: 添加了在 fragment/activity
中点击收听位置的示例代码
第一步:制作接口或回调
public interface RecyclerViewClickListener {
void onClick(View view, int position);
}
第 2 步:在片段或 activity 中初始化适配器 class 时,将上面创建的引用作为参数传递
public YourAdapter(List<SomeModel> modelList, RecyclerViewClickListener listener){
this.clickListener = listener;
}
第 3 步:在您的 ViewHolder 或类似的 Class 视图初始化中执行类似这样的操作
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private Button mapBtn;
ViewHolder(View v, RecyclerViewClickListener listener) {
super(v);
mapBtn = findViewById(R.id.mapBtn);
mListener = listener;
mapBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onClick(view, getAdapterPosition());
}
}
您将获得您的片段中的位置或 activity 您在初始化适配器时传递回调引用的位置。
如何获取 RecyclerView 项目中点击按钮的位置
这是我的 onBindViewHolder :
public void onBindViewHolder(MyViewHolder holder, int position) {
Masar masar=masrList.get(position);
holder.masarName.setText(masar.getMasarTitle());
holder.masarDesc.setText(masar.getMasarDescreption());
//How to get the Position
holder.masarImg.setImageResource(masar.getMasarImg());
holder.mapBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
//if you need position, just use recycleViewHolder.getAdapterPosition();
Intent intent = new Intent(v.getContext(), MapsActivity.class);
mContext.startActivity(intent);
}
});
}
使用holder.getAdapterPosition();
public void onBindViewHolder(final MyViewHolder holder, int position) {
Masar masar=masrList.get(position);
holder.masarName.setText(masar.getMasarTitle());
holder.masarDesc.setText(masar.getMasarDescreption());
//How to get the Position
holder.masarImg.setImageResource(masar.getMasarImg());
holder.mapBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v ) {
Toast.makeText(getContext(), "The position is: "+holder.getAdapterPosition(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(v.getContext(), MapsActivity.class);
mContext.startActivity(intent);
}
});}
如果你需要在 onBindViewHolder 中才可以使用
holder.getAdapterPosition();
如果您需要在 activity 和片段中单击此位置,则必须使用从 holder 到 activity 和片段的回调,并且必须传递相同的 getAdapterPosition();
编辑: 添加了在 fragment/activity
中点击收听位置的示例代码第一步:制作接口或回调
public interface RecyclerViewClickListener {
void onClick(View view, int position);
}
第 2 步:在片段或 activity 中初始化适配器 class 时,将上面创建的引用作为参数传递
public YourAdapter(List<SomeModel> modelList, RecyclerViewClickListener listener){
this.clickListener = listener;
}
第 3 步:在您的 ViewHolder 或类似的 Class 视图初始化中执行类似这样的操作
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private Button mapBtn;
ViewHolder(View v, RecyclerViewClickListener listener) {
super(v);
mapBtn = findViewById(R.id.mapBtn);
mListener = listener;
mapBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
mListener.onClick(view, getAdapterPosition());
}
}
您将获得您的片段中的位置或 activity 您在初始化适配器时传递回调引用的位置。