【发布时间】:2018-05-19 06:25:00
【问题描述】:
我会关注这个 SO 链接,但对我没有帮助:
How to pass ArrayList<CustomeObject> from one activity to another?
How to pass a String array value from one activity to another Activity in android?
我正在尝试将 JSon 子类别数据从一个活动发送到另一个活动
见下面的Json格式:
在上面的 Json 中,data 是获取主类别的,subcategory 获取子数据
现在我将在一个活动中完美地获取这两个数据。
但是我正在尝试单击主类别的数据,并且每个主要子类别数据都传递给另一个活动
请看下图理解:
希望所有用户都得到我
现在我尝试了这个
MainActivity.java 类用于获取 JsonData:
final JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
url, jsonObject, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
try {
JSONArray jArray = response.getJSONArray("data");
for (int i = 0; i < jArray.length(); i++) {
JSONObject json_data = jArray.getJSONObject(i);
Pojo dataPojo = new Pojo();
dataPojo.setCatagory_id(json_data.getString("category_id"));
dataPojo.setCatagory_name(json_data.getString("category_name"));
dataPojo.setCatagory_thumbnailUrl(json_data.getString("category_image"));
dataList.add(dataPojo);
JSONArray jArray1 = json_data.getJSONArray("subcategory");
}
dataAdapter = new DataAdapter(dataList);
dataAdapter.setClickListener(jsonDataClickListener);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
//recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
recyclerView.setAdapter(dataAdapter);
dataAdapter.notifyDataSetChanged();
}
MainActivity.java 传递子类别的类:
OnItemClickListener jsonDataClickListener = new OnItemClickListener() {
@Override
public void onItemClick(Pojo item) {
Intent intent = new Intent(MainActivity.this, SubCategoryData.class);
intent.putExtra("Key", (Serializable) dataList);
startActivity(intent);
}
};
在上面的代码中,它给我一个myList,大小是0
Pojo.java 模型类:
公共类 Pojo 扩展 Base 实现 Serializable{
private String catagory_id;
private String catagory_name;
private String catagory_thumbnailUrl;
private String childListSize;
private ArrayList<Pojo2> subCatagoryArrayList;
public ArrayList<Pojo2> getSubCatagoryArrayList() {
return subCatagoryArrayList;
}
public void setSubCatagoryArrayList(ArrayList<Pojo2> subCatagoryArrayList) {
this.subCatagoryArrayList = subCatagoryArrayList;
}
public String getCatagory_id() {
return catagory_id;
}
public void setCatagory_id(String catagory_id) {
this.catagory_id = catagory_id;
}
public String getCatagory_name() {
return catagory_name;
}
public void setCatagory_name(String catagory_name) {
this.catagory_name = catagory_name;
}
public String getCatagory_thumbnailUrl() {
return catagory_thumbnailUrl;
}
public void setCatagory_thumbnailUrl(String catagory_thumbnailUrl) {
this.catagory_thumbnailUrl = catagory_thumbnailUrl;
}
}
Pojo2.java 子类别的模型类:
public class Pojo2 {
private String subcatagory_id;
private String subcatagory_name;
/*public Pojo2(String SubId, String SubName){
super(SubId, SubName);
}*/
public String getSubcatagory_id() {
return subcatagory_id;
}
public void setSubcatagory_id(String subcatagory_id) {
this.subcatagory_id = subcatagory_id;
}
public String getSubcatagory_name() {
return subcatagory_name;
}
public void setSubcatagory_name(String subcatagory_name) {
this.subcatagory_name = subcatagory_name;
}
}
更新
当我使用@Birju 回答发送ArrayList 时,它对我有用,但是在我接收数据的地方却给了我一个错误。
java.util.ArrayList cannot be cast to java.lang.String
为了接收数据,我将使用以下代码:
Intent intent = getIntent();
Bundle b = intent.getExtras();
if(b!=null)
{
String j =(String) b.getSerializable("Key");
subId.setText(j);
}
但每次都会出现上述错误我该如何解决
【问题讨论】:
标签: java android json arraylist