Android RecyclerView获取子项

时间:2017-05-27 13:04:30

标签: android android-recyclerview

我的RecyclerView中有一个Activity。每行都有一个Button。 如何点击女巫按钮并做点什么。 的意思是:

如果第1行单击按钮显示“a”

如果第2行单击按钮显示“b”;

1 个答案:

答案 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
    }
}

获得职位后,您知道哪张卡被按下了:)