簡體   English   中英

將變量從Recyclerview-Holder傳遞到Mainactivity

[英]Pass variable from Recyclerview-Holder to Mainactivity

我嘗試了很多事情,但無法正常工作...我嘗試將此String變量(當我單擊RecyclerView中的Item時)傳遞給MainActivity。 不好的工作是調用函數(OnRecyclerViewItemClick)並更改變量(GetUrlFromItem)。 我的Android Studio版本是2.3.3

我真的需要這樣做:

我的RecyclerView:

public class viewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{

    TextView titulo;
    Button playbtn01;
    List<Fuente> ListaObjeto;

    public viewHolder(View itemView,List<Fuente> datos) {
        super(itemView);

        ListaObjeto = datos;

        titulo = (TextView) itemView.findViewById(R.id.texto);
        playbtn01 = (Button) itemView.findViewById(R.id.playbtn00);

        playbtn01.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        int position = getAdapterPosition();
        Fuente objeto = ListaObjeto.get(position);

        if (view.getId() == playbtn01.getId()) {

            MainActivity mainActivity = new MainActivity:
            mainActivity.OnRecyclerViewItemClick();      /// initiate Void in Main
            mainActivity.GetUrlFromItem = objeto.GetUrl; //Change Variable of Main

        }
    }
}

主要活動

public class MainActivity extends AppCompatActivity {

    public String GetUrlFromItem; 

    public void OnRecyclerViewItemClick() {
        if (GetUrlFromItem  == "..."){
            doSomething...
        }
    }
}

我看到了兩個大問題。

第一個是如何使用MainActivity實例。 在您的問題中,您具有以下代碼行:

MainActivity mainActivity = new MainActivity:

調用new可以完全聽起來像:創建MainActivity類的實例。 您不需要新實例! 您希望您的實例仍在運行。

有很多方法讓你的阿霍德活着並運行了一把MainActivity ,但可能是最簡單的一種,現在將要鑄造你的ViewHolderitemViewContext 因此,代替上面的內容,編寫如下代碼:

MainActivity mainActivity = (MainActivity) itemView.getContext();

接下來的兩行是第二個大問題:

mainActivity.OnRecyclerViewItemClick();
mainActivity.GetUrlFromItem = objeto.GetUrl;

這里的問題是這兩個語句的順序。 因為您設置mainActivity.GetUrlFromItem的值之前調用mainActivity.OnRecyclerViewItemClick() ,所以在執行OnRecyclerViewItemClick()時不會更新該值。

只需交換這兩行的順序即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM