将字符串从自定义适配器发送到活动

时间:2018-01-01 10:41:48

标签: android

我有一个自定义listView行,如下所示:

customRow

我有一个带有以下getView方法的customAdapter(没有删除有趣的部分)

@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
    holder.viewProfileImageButton = view.findViewById(R.id.viewProfileImageButton);
    holder.viewProfileImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           String pubKey ((objClass_foundUsers)foundUsersList.get(i)).getPublicKey();
            Intent getToUserProfileIntent = new Intent(context,activity_1_3_my_profile.class);
            context.startActivity(getToUserProfileIntent);
        }
    });
}

当用户点击行中的第一个图像按钮时,应显示该用户的个人资料。为了做到这一点,我在onClick的{​​{1}}方法中获取了用户的publicKey,并希望将其传递给另一个customAdapter

使用时

activity

在customAdapter和

中的onClick方法中
getToUserProfileIntent.putExtra("pubKey", pubKey);

在我的活动中它会抛出一个NullPointerException:

pubKey = getIntent().getExtras().getString("pubKey");

如何将publicKey从此适配器发送到另一个活动?

6 个答案:

答案 0 :(得分:1)

尝试此操作,您需要使用 add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );

getToUserProfileIntent中添加数据
getToUserProfileIntent.putExtra()

Intent getToUserProfileIntent = new Intent(context,activity_1_3_my_profile.class); getToUserProfileIntent.putExtra("pubKey", pubKey); context.startActivity(getToUserProfileIntent);

中收到这样的内容
activity_1_3_my_profile

答案 1 :(得分:1)

您可以使用以下适配器中的意图发送数据:

   Intent mIntent = new Intent(context, yourTargetActivity.class);
    mIntent.putExtra("pubKey", pubKey);
    context.startActivity(mIntent);

您可以实施界面将数据发送到您的活动:

 public interface OnButtonPayNowCallBack {
    void onClickListener(String pubKey);
}

将此添加到适配器的构造函数:

  try {
        this.mOnButtonCallBack = (OnButtonCallBack) context;
    } catch (ClassCastException e) {
        throw new ClassCastException("Calling Context must implement 
                 OnButtonBack");
    }

然后在你的点击监听器中:

holder.viewProfileImageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
onClickListener(pubKey)
}
}

在您的下一个活动中,您将获得如下数据: 通过意图发送数据:

   Bundle extras = getIntent().getExtras();
if (extras != null) {
    String pubKey= extras.getString("pubKey");
}

并且通过界面发送数据:

first implement the interface in activity then use it's override method
    @Override
    public void OnButtonCallBack (String param) {

       // add your functionality here.
    }

答案 2 :(得分:1)

发送使用此代码

Intent getToUserProfileIntent  = new Intent(getApplicationContext(), activity_1_3_my_profile.class);
getToUserProfileIntent .putExtra("pubKey","pubKey");
startActivity(getToUserProfileIntent );

用于获取活动中的数据使用此代码

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String pubKey= extras.getString("pubKey");
    //The key argument here must match that used in your adapter
}

答案 3 :(得分:0)

 holder.viewProfileImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            Intent getToUserProfileIntent = new Intent(context,activity_1_3_my_profile.class);
            getToUserProfileIntent.putExtra("pubKey", pubkey);

                v.getContext().startActivity(getToUserProfileIntent);
            }
        });

答案 4 :(得分:0)

请查看以下答案,希望对您有所帮助。

if(getIntent()!=null) // at first to check data is in intent or not
{

if(getIntent().hasExtra("pubKey")) // to avoid crash if pubKey is not passing.
{

pubKey = getIntent().getExtras().getString("pubKey");

}

}

希望它有所帮助。

答案 5 :(得分:0)

尝试使用以下代码将数据发送到其他活动:

@Override
        public View getView(final int i, View view, ViewGroup viewGroup) {

            holder.viewProfileImageButton = view.findViewById(R.id.viewProfileImageButton);

            holder.viewProfileImageButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                   String pubKey = ((objClass_foundUsers)foundUsersList.get(i)).getPublicKey();

                    Intent getToUserProfileIntent = new Intent(context,activity_1_3_my_profile.class);
 getToUserProfileIntent.putExtra("pubKey", pubKey);

                    context.startActivity(getToUserProfileIntent);

                }
            });
        }

以下用于在另一项活动中获取数据的代码:

pubKey = getIntent().getExtras().getString("pubKey");