我尝试了很多东西,但我无法让它工作......我尝试将此字符串变量(当我在RecyclerView中单击项目时)传递给我的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
}
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
public String GetUrlFromItem;
public void OnRecyclerViewItemClick() {
if (GetUrlFromItem == "..."){
doSomething...
}
}
}
答案 0 :(得分:0)
我看到了两个大问题。
首先是如何使用MainActivity
实例。在你的问题中,你有这行代码:
MainActivity mainActivity = new MainActivity:
调用new
将完全听起来像:创建MainActivity
类的 new 实例。你不想要一个新的实例!你想要活着并运行实例。
有一些方法可以让你活着并运行MainActivity
,但现在最简单的方法就是投射ViewHolder
的{{1}}个itemView
。所以不是上面的内容,写下这样的东西:
Context
第二个大问题是接下来的两行:
MainActivity mainActivity = (MainActivity) itemView.getContext();
这里的问题是这两个陈述的顺序。由于您在设置mainActivity.OnRecyclerViewItemClick();
mainActivity.GetUrlFromItem = objeto.GetUrl;
的值之前调用了mainActivity.OnRecyclerViewItemClick()
,因此在执行mainActivity.GetUrlFromItem
时不会更新该值。
只需交换这两行的顺序即可。