如何检查点击了哪个RecyclerView

我有两个观点RecyclerViews。它们有不同的 ArrayLists,但适配器类型相同。在我的活动中的 OnClick 方法中,我想获取Recyclers已单击的项目,然后选择项目。

我尝试使用view instanceof RecylcerView但没有成功。


青春有我
浏览 127回答 4
4回答

森栏

您可以将 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那么它的parent首先是RecyclerView。如果它是 RelativeLayout 那么它的父级是第二个 RecyclerView。但是通过使用上述方法,我们可以使各个子视图的根布局具有相同的布局(LinearLayout 或 RelativeLayout),并且可以看到上述功能是否有效。

至尊宝的传说

我认为您正在寻找的只是onClickListener在RecyclerView其Adapter. 您可以使用接口来完成,在这种情况下您需要创建 2 个接口:interface clickListenerInFirstRecycler{void onFirstClick(int position);}interface clickListenerInSecondRecycler{    void onSecondClick(int position);}根据您要从项目中检索的信息,只需更改界面中的参数即可。在这种情况下,我将只使用检索项目的位置。然后在你的Adapter类中创建这些接口的全局变量及其设置方法:private  clickListenerInFirstRecycler listener;public void setOnClickListener(clickListenerInFirstRecycler listener){    this.listener = listener;}用第二个接口和适配器做类比。然后onBindViewHolder调用此变量,在本例listener中为您创建的方法(在第一种情况下为 onFirstClick)并传递适当的参数。在这种情况下,它只是位置:listener.onFirstClick(position);然后转到您的活动并让它们实现这些接口。您将需要覆盖接口中的方法,然后您将能够从那里处理来自指定 RecyclerView 的点击和数据。不要忘记调用onCreate或初始化后Adapter设置这些接口: adapter.setOnClickListener(this)

慕运维8079593

我终于设法弄清楚了。它比大多数答案更简单,因为它都在活动onClick方法中解决了:public void onClick(View v){    ViewParent parent = v.getParent();        switch (((RecyclerView) parent).getId()) {            case R.id.recycler_first:            // Code            break;            case R.id.recycler_second:            // Code            break;        }}

鸿蒙传说

在您的活动点击侦听器中,您只需要检查哪个视图与 RecyclerView 的行 ID 匹配。RecyclerView_row.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/recyclerView1I"android:layout_width="match_parent"android:layout_height="wrap_content">&nbsp; &nbsp;<!---&nbsp; RecyclerView's other Views --></RelativeLayout>主要活动override fun onItemClick(view: View, position: Int) {&nbsp; &nbsp; &nbsp;if(view.id == R.id.recyclerView1I){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//Do stuff&nbsp; &nbsp; &nbsp;}假设您已经在适配器中设置了 OnClickListener 接口,这就是您确定单击了哪个 RecyclerView 的方式。我用 Kotlin 写了这个答案,但你应该能够轻松转换为 Java :)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java