参考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中提出观看者建议,因为我正在进行大量的片段交易
答案 0 :(得分:0)
您必须实施活动 - 片段 - RecyclerView.Adapter 通信。 (通过接口模式进行片段通信)
您应该为 fragment-recyclerview.Adapter 通信使用一个界面,为活动片段通信使用另一个界面。
有一个很好的例子(github)如何实现recyclerview但没有片段
<强> antoniolg - RecyclerViewExtensions 强>
我的代码截图有蓝色背景评论(todo)所以你可以按照代码流程,我使用LongClick代替Click而我的ViewModel类是朋友/用户,我有两个disjunctional listview所以当有人点击用户时将迁移到朋友列表,反之亦然。
如果我的解释出现问题,请纠正我,因为我也在学习Android。