我有两个RecyclerViews视图。它们具有不同的ArrayList,但具有相同的适配器。在我的活动的OnClick方法中,我想获取单击了哪个Recyclers,然后选择该项目。

我尝试使用view instanceof RecylcerView,但这并不能解决问题。

最佳答案

您可以将onClickListener添加到relativeLayout的子布局中。

考虑到,第一个RecyclerView具有LinearLayout,第二个内部具有RelativeLayout(我的意思是我认为LinearLayout是第一个RecyclerView中单个项目的父布局,而RelativeLayout是第二个RecyclerView中单个项目的父布局)。

linLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        getParentName(v);
    }
});
    relLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        getParentName(v);
    }
});
private void getParentName (View v){
    View view = (View) v.getParent();
    switch (view.getId()) {
        case R.id.linLayout:
            Toast.makeText(MainActivity.this, "First One", Toast.LENGTH_SHORT).show();
            break;
        case R.id.relLayout:
            Toast.makeText(MainActivity.this, "Second One", Toast.LENGTH_SHORT).show();
            break;
    }
}


我们知道,如果它是LinearLayout,则其父对象是第一个RecyclerView。
如果是RelativeLayout,则其父级是第二个RecyclerView。

但是,通过使用上述方法,我们可以使单个子视图的根布局具有相同的布局(LinearLayout或RelativeLayout),并看到上述功能有效。

10-05 19:18