首先,我将告诉您我的英语列表非常糟糕,并且是代码的新手。
所以,请耐心和友善:)
我通过String
通过了StringArraylist
和Intent
。
我无法通过StringArraylist
。
arrayAdapter
userId = data.get ( getAdapterPosition () ).getUserId ();
name = data.get ( getAdapterPosition () ).getName ();
ImageUrl = data.get ( getAdapterPosition () ).getImageUrl ();
Intent intent = new Intent (mContext, DisplayActivity.class);
Bundle bundle = new Bundle ();
bundle.putString ("userId", userId);
bundle.putString ("name", name);
bundle.putStringArrayList ( "ImageUrl ", (ArrayList<String>) ImageUrl );
intent.putExtras ( bundle );
Toast.makeText ( mContext, "userId = " + userId, Toast.LENGTH_SHORT ).show ();
Toast.makeText ( mContext, "name = " + name, Toast.LENGTH_SHORT ).show ();
for (int i = 0; i < ImageUrl.size (); i++) {
Toast.makeText ( mContext, "Url " + (i+1) + " = " + ImageUrl.get ( i ), Toast.LENGTH_SHORT ).show ();
} // Checked all result and everything is fine.
intent.addFlags ( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK );
mContext.startActivity(intent);
userId
name
和ImageUrl
的所有结果都能正确获取。
DisplayActivity
Bundle bundle = getIntent().getExtras();
assert bundle != null;
String userId = bundle.getString ( "userId" );
String name = bundle.getString("name");
ArrayList<String>ImageUrl = bundle.getStringArrayList ("ImageUrl");
Toast.makeText ( DisplayActivity.this, "userId is = " + userId, Toast.LENGTH_SHORT ).show ();
Toast.makeText ( DisplayActivity.this, "Name is = " + name, Toast.LENGTH_SHORT ).show ();
if (ImageUrl == null) {
Toast.makeText ( DisplayActivity.this, "ImageUrl = null", Toast.LENGTH_SHORT ).show ();
} else {
for (int i = 0; i < ImageUrl.size (); i++) {
Toast.makeText ( DisplayActivity.this, "Url " + (i+1) + " = " + ImageUrl.get ( i ), Toast.LENGTH_SHORT ).show ();
}
}
传递了
userId
和name
的字符串值,并正确显示。只有
ImageUrl
获得空结果。
我知道这是一个愚蠢的问题,已经有很多主题。
但是,我已经尝试过
示例:
arrayAdapter
intent.putStringArrayListExtra ( "ImageUrl ", (ArrayList<String>) ImageUrl );
DisplayActivity
ArrayList<String> ImageUrl = getIntent().getStringArrayListExtra ("ImageUrl");
没有合适的答案并得到相同的结果。
请帮助我。
我找不到出路。 ;(
答案 0 :(得分:0)
这不是使用意图传递捆绑商品的正确类型
请使用它在其他活动中传递数据
如果使用活动,则使用 发送数据
Intent intent = new Intent();
intent.putExtras("key",value)
在另一个活动中获取传递的数据
String s = getIntent().getExtras().getString("key");
您可以在s
变量中获取值 并根据需要更改变量类型
如果您正在使用Fragment,则可以像这样传递数据
bundle = new Bundle();
bundle.putString ("userId", userId);
bundle.putString ("name", name);
bundle.putStringArrayList ( "ImageUrl ", (ArrayList<String>) ImageUrl );
fragment.setArguments(bundle);
并使用另一个片段获取传递的数据
Bundle bundle = getArguments();
String userId = bundle.getString ( "userId" );
String name = bundle.getString("name");
您的代码
Bundle bundle = new Bundle ();
bundle.putString ("userId", userId);
bundle.putString ("name", name);
bundle.putStringArrayList ( "ImageUrl ", (ArrayList<String>) ImageUrl );
intent.putExtras (bundle);
要获取您正在使用的数据
Bundle bundle = getIntent().getExtras();
assert bundle != null;
String userId = bundle.getString ( "userId" );
String name = bundle.getString("name");
答案 1 :(得分:0)
您可以将ArrayList序列化为一个字符串,并将其作为字符串值传递给下一个活动。
.. automodule:: main
:members
.. automodule:: modulefolder.fileIwanttodocument
:members:
稍后在第二个活动中,您可以再次将String反序列化为ArrayList。
// creating output stream variables
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
// for writing or saving binary data
fos = new FileOutputStream("SaveArrayList.ser");
// converting java-object to binary-format
oos = new ObjectOutputStream(fos);
// writing or saving ArrayList values to stream
oos.writeObject(yourarraylist);
oos.flush();
oos.close();
}
catch (FileNotFoundException fnfex) {
fnfex.printStackTrace();
}
catch (IOException ioex) {
ioex.printStackTrace();
}
答案 2 :(得分:0)
用于放置
bundle.putStringArrayList("ImageUrl", new ArrayList<>(ImageUrl));
要获取数据,请使用此
bundle.getStringArrayList("ImageUrl")