我的RecyclerView
中有一个Activity
。每行都有一个Button
。
如何点击女巫按钮并做点什么。
的意思是:
如果第1行单击按钮显示“a”
如果第2行单击按钮显示“b”;
答案 0 :(得分:0)
这是一个常见问题,毫无疑问有很多解决方案。这是我发现的最通用的:
此方法的工作方式是将适配器注册为侦听器,以查看ViewHolder对象中的事件:
第1步:
创建一个新的接口类:
public interface MyCardListener {
boolean buttonPressed(View v, MotionEvent motionEvent, int position);
}
第2步:
修改ViewHolder类,在按下按钮时将动画事件和数据位置传递给侦听器:
public class MyCardViewHolder extends RecyclerView.ViewHolder {
private Button actionBtn;
public MyCardViewHolder(View itemView) {...}
public void setListener(final MyCardListener listener, final int position){
actionBtn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent){
return listener.buttonPressed(view, motionEvent, position);
}
});
}
}
第3步:
修改您的Adapter
以接收按钮事件:
public class MyCardAdapter extends RecyclerView.Adapter<MyCardViewHolder> implements MyCardListener {
...
@Override
public void onBindViewHolder(MyCardViewHolder holder, int position){
...
holder.setListener(this, position)
}
@Override
public boolean buttonPressed(View v, MotionEvent motionEvent, int pos){
//the button on the card at position pos was pressed
}
}
获得职位后,您知道哪张卡被按下了:)