将变量从Recyclerview-Holder传递到Mainactivity

时间:2017-08-21 16:52:20

标签: java android android-recyclerview main-activity

我尝试了很多东西,但我无法让它工作......我尝试将此字符串变量(当我在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...
        }
    }
}

1 个答案:

答案 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时不会更新该值。

只需交换这两行的顺序即可。