[英]How to pass List<E> from RecyclerView Adapter to RecyclerView Holder?
[英]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
,但可能是最簡單的一種,現在將要鑄造你的ViewHolder
的itemView
的Context
。 因此,代替上面的內容,編寫如下代碼:
MainActivity mainActivity = (MainActivity) itemView.getContext();
接下來的兩行是第二個大問題:
mainActivity.OnRecyclerViewItemClick();
mainActivity.GetUrlFromItem = objeto.GetUrl;
這里的問題是這兩個語句的順序。 因為您在設置mainActivity.GetUrlFromItem
的值之前調用mainActivity.OnRecyclerViewItemClick()
,所以在執行OnRecyclerViewItemClick()
時不會更新該值。
只需交換這兩行的順序即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.