将值从活动传递到适配器

时间:2016-09-03 06:58:22

标签: android android-recyclerview

我正在开发一个应用程序,当用户输入他们的邮件ID时,我将其存储在varible中并传递给其他活动。 为此,我使用导航抽屉,在主活动中,我将电子邮件传递给另一个internShips的活动。我通过使用其位置传递值:如下所示:

         mDrawerList.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                                long arg3) {
if(position==3)
            {
               Intent intent = new Intent(MainActivity.this,internships.class) ;
                intent.putExtra("email", email);
                startActivity(intent);
            }

在实习中,我正在使用recyclerview。如果我点击任何项目,它将开始另一项活动。点击项目我在实习适配器中给出点击选项,如下所示:

    holder.itemView.setOnClickListener (new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {


          Intent i = new Intent(v.getContext(), InternShipsDetails.class);

            String email = i.getStringExtra("email");
            i.putExtra("email" , email);
            v.getContext().startActivity(i);

        }
    });
}

在其他活动中,我使用intent获取值,如下所示:

    Intent intent = getIntent();
    String email=intent.getStringExtra("email");

但问题是,电子邮件的价值显示为空。所以,我错了,请在这里提供帮助。

2 个答案:

答案 0 :(得分:1)

  

holder onClick内更改您的代码。因为您正在使用intent来改变您的活动。因此,您需要使用getIntent()来获取email值。

Intent i = new Intent(v.getContext(), InternShipsDetails.class);
Intent emailIntent = ((Activity)v.getContext()).getIntent();
String email = emailIntent.getStringExtra("email");
i.putExtra("email" , email);
Log.d("###$email", email + "");

v.getContext().startActivity(i);

答案 1 :(得分:0)

而不是Intent i = new Intent(v.getContext(), InternShipsDetails.class) 使用您应该传递给适配器的上下文(设置适配器的活动)并执行以下操作:

Intent i = new Intent(context, InternShipsDetails.class);