如何确定在recycleview / cardview中单击了哪个按钮?

时间:2014-10-24 19:03:05

标签: android android-recyclerview

参考Jacob Tabok的帖子here,我在片段的onCreateView中添加了一个OnItemTouchListener:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.list_recylclerview);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(_context));
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    mRecyclerView.addOnItemTouchListener(
            new RecyclerItemClickListener(_context, new RecyclerItemClickListener.OnItemClickListener() {
                @Override public void onItemClick(View view, int position) {
                    logger.i("onitemClick");
                }

            })
    );

我完全不知道如何使用建议的做法确定我的cardview中的哪个按钮被点击了。问题是返回整个cardview而不是我点击的项目,如here

所示

如何确定点击了哪个按钮?我想避免在post中提出观看者建议,因为我正在进行大量的片段交易

1 个答案:

答案 0 :(得分:0)

您必须实施活动 - 片段 - RecyclerView.Adapter 通信。 (通过接口模式进行片段通信)

您应该为 fragment-recyclerview.Adapter 通信使用一个界面,为活动片段通信使用另一个界面。

有一个很好的例子(github)如何实现recyclerview但没有片段

<强> antoniolg - RecyclerViewExtensions


我的代码截图有蓝色背景评论(todo)所以你可以按照代码流程,我使用LongClick代替Click而我的ViewModel类是朋友/用户,我有两个disjunctional listview所以当有人点击用户时将迁移到朋友列表,反之亦然。

RecylclerAdapter


Fragment


Activity


如果我的解释出现问题,请纠正我,因为我也在学习Android。