You*_*mad 0 android android-adapter onclicklistener recycler-adapter android-recyclerview
如何获得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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果仅需要onBindViewHolder,则可以使用
holder.getAdapterPosition();
Run Code Online (Sandbox Code Playgroud)
如果您需要在活动和片段中单击此位置,则必须使用从持有人到活动和片段的回调,并且必须传递相同的getAdapterPosition();
编辑:在片段/活动中添加了用于收听位置点击的示例代码
步骤1:建立介面或回呼
public interface RecyclerViewClickListener {
void onClick(View view, int position);
}
Run Code Online (Sandbox Code Playgroud)
步骤2:在片段或活动中初始化适配器类时,将上面创建的引用作为参数传递
public YourAdapter(List<SomeModel> modelList, RecyclerViewClickListener listener){
this.clickListener = listener;
}
Run Code Online (Sandbox Code Playgroud)
第3步:在ViewHolder或类似的类中进行视图初始化,请执行以下操作
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());
}
}
Run Code Online (Sandbox Code Playgroud)
您将在片段或活动中获得初始化适配器时传递回调引用的位置。
归档时间: |
|
查看次数: |
5646 次 |
最近记录: |