4 回答

TA貢獻1810條經(jīng)驗 獲得超5個贊
您可以將 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),并且可以看到上述功能是否有效。

TA貢獻1789條經(jīng)驗 獲得超10個贊
我認為您正在尋找的只是onClickListener在RecyclerView其Adapter. 您可以使用接口來完成,在這種情況下您需要創(chuàng)建 2 個接口:
interface clickListenerInFirstRecycler{
void onFirstClick(int position);
}
interface clickListenerInSecondRecycler{
void onSecondClick(int position);
}
根據(jù)您要從項目中檢索的信息,只需更改界面中的參數(shù)即可。在這種情況下,我將只使用檢索項目的位置。
然后在你的Adapter類中創(chuàng)建這些接口的全局變量及其設(shè)置方法:
private clickListenerInFirstRecycler listener;
public void setOnClickListener(clickListenerInFirstRecycler listener){
this.listener = listener;
}
用第二個接口和適配器做類比。
然后onBindViewHolder調(diào)用此變量,在本例listener中為您創(chuàng)建的方法(在第一種情況下為 onFirstClick)并傳遞適當(dāng)?shù)膮?shù)。在這種情況下,它只是位置:
listener.onFirstClick(position);
然后轉(zhuǎn)到您的活動并讓它們實現(xiàn)這些接口。您將需要覆蓋接口中的方法,然后您將能夠從那里處理來自指定 RecyclerView 的點擊和數(shù)據(jù)。不要忘記調(diào)用onCreate或初始化后Adapter設(shè)置這些接口: adapter.setOnClickListener(this)

TA貢獻1876條經(jīng)驗 獲得超5個贊
我終于設(shè)法弄清楚了。它比大多數(shù)答案更簡單,因為它都在活動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;
}
}

TA貢獻1865條經(jīng)驗 獲得超7個贊
在您的活動點擊偵聽器中,您只需要檢查哪個視圖與 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">
<!--- RecyclerView's other Views -->
</RelativeLayout>
主要活動
override fun onItemClick(view: View, position: Int) {
if(view.id == R.id.recyclerView1I){
//Do stuff
}
假設(shè)您已經(jīng)在適配器中設(shè)置了 OnClickListener 接口,這就是您確定單擊了哪個 RecyclerView 的方式。我用 Kotlin 寫了這個答案,但你應(yīng)該能夠輕松轉(zhuǎn)換為 Java :)
添加回答
舉報