我有一个自定义listView行,如下所示:
我有一个带有以下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从此适配器发送到另一个活动?
答案 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");