![](/img/trans.png)
[英]Android passing values of JSON object to another activity on list item click
[英]Passing a List to another Activity in Android
我創建了一個列表,並希望將列表傳遞給另一個活動,但是當我創建intent時,我在putExtra語句中收到錯誤。 只是想知道是否有任何簡單的方法來傳遞字符串列表而不是單個字符串?
謝謝
private List<String> selItemList;
private ListView mainListView = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recipes);
Button searchBtn = (Button) findViewById(R.id.searchButton);
searchBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (selItemList == null) {
Toast.makeText(getApplicationContext()," Please Make A Selection ", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(Recipes2.this, XMLParser.class);
intent.putExtra("items_to_parse", selItemList);
startActivityForResult(intent, 0);
}
}
});
您可以使用putStringArrayListExtra
從Intent
public Intent putStringArrayListExtra(String name,ArrayList value)
private final List<String> selItemList;
private ListView mainListView = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recipes);
Button searchBtn = (Button) findViewById(R.id.searchButton);
searchBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (selItemList == null) {
Toast.makeText(Recipes2.this," Please Make A Selection ", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(Recipes2.this, XMLParser.class);
intent.putStringArrayListExtra("items_to_parse", (ArrayList<String>) selItemList);
startActivityForResult(intent, 0);
}
}
});
在您的XMLParser.class中:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getExtras() != null) {
for(String a : getIntent().getExtras().getStringArrayList("items_to_parse")) {
Log.d("=======","Data " + a);
}
}
您無法在Intent.putExtras(String name, List<?> list);
傳遞List Intent.putExtras(String name, List<?> list);
。 我想你可以使用一個Array
的String
,並傳遞它putExtras
這樣的:
private List<String> selItemList;
private ListView mainListView = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recipes);
Button searchBtn = (Button) findViewById(R.id.searchButton);
searchBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (selItemList == null) {
Toast.makeText(getApplicationContext(), "Please Make A Selection", Toast.LENGTH_SHORT).show();
} else {
String[] selItemArray = new String[selItemList.size()];
// Copy your List of Strings into the Array, and then pass it in your intent
// ....
Intent intent = new Intent(Recipes2.this, XMLParser.class);
intent.putExtra("items_to_parse", selItemArray);
startActivityForResult(intent, 0);
}
}
});
我知道這有點晚了,這個問題已經有了答案,但這是另一種方式。
只需創建另一個對象,將其定義為Serializable
並為其提供一個列表變量,並使用putExtra
將其發送到您的intent
如下所示:
public class Category implements Serializable {
private List<YourObject> objects;
public Category() {
}
public List<YourObject> getObjects() {
return objects;
}
public void setObjects(List<YourObject> objects) {
this.objects = objects;
}
然后發送它執行此操作:
Category cat = new Category();
cat.setObjects(objects);
intent.putExtra("listOfObjects",cat);
startActivity(intent);
並獲取您創建的對象執行此操作:
Category cat = (Category) extras.get("listOfObjects");
cat.getObjects;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.