第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查點擊了哪個RecyclerView

如何檢查點擊了哪個RecyclerView

青春有我 2022-12-15 16:30:46
我有兩個觀點RecyclerViews。它們有不同的 ArrayLists,但適配器類型相同。在我的活動中的 OnClick 方法中,我想獲取Recyclers已單擊的項目,然后選擇項目。我嘗試使用view instanceof RecylcerView但沒有成功。
查看完整描述

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),并且可以看到上述功能是否有效。


查看完整回答
反對 回復(fù) 2022-12-15
?
至尊寶的傳說

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)


查看完整回答
反對 回復(fù) 2022-12-15
?
慕運維8079593

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;

        }

}


查看完整回答
反對 回復(fù) 2022-12-15
?
鴻蒙傳說

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 :)


查看完整回答
反對 回復(fù) 2022-12-15
  • 4 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號