如何解决Android改造:每次出现故障时,我都希望从子类中获得“标题”
主活动就是这样
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiCallInterface apiCallInterface = retrofit.create(ApiCallInterface.class);
Call<MenuResponse> call = apiCallInterface.getResponseData("eyJhcGlrZXkiOiI1YTRmNzRiNTUyNzUxOWMwYzY3MGMwZWQ5MDRhZTM0MSJ9");
call.enqueue(new Callback<MenuResponse>() {
@Override
public void onResponse(Call<MenuResponse> call,Response<MenuResponse> response) {
Log.d(TAG,"onResponse: server response" + response.toString());
Log.d(TAG,"onResponse: received info" + response.body().toString());
List<Datum> children = response.body().getData();
for (int i = 0; i < children.size(); i++) {
Log.d(TAG,"onresopnse" +
"title: " + children.get(i).getTitle());
}
}
@Override
public void onFailure(Call<MenuResponse> call,Throwable t) {
Log.d(TAG,"onFailure something went wrong" + t.getMessage());
Toast.makeText(ContactUsActivity.this,"Something went wrong!",Toast.LENGTH_SHORT).show();
}
});
Api接口有点像这样:
public interface ApiCallInterface {
@POST("menu")
Call<MenuResponse> getResponseData(@Query("data") String data);
}
这是我的主要Model类,名为:menuresponse
public class MenuResponse {
@SerializedName("data")
private List<Datum> mData;
public List<Datum> getData() {
return mData;
}
public void setData(List<Datum> data) {
mData = data;
}
}
来自菜单响应基准类:
public class Datum {
@SerializedName("childs")
private List<Child> mChilds;
@SerializedName("ID")
private Long mID;
@SerializedName("menu_item_parent")
private String mMenuItemParent;
@SerializedName("object")
private String mObject;
@SerializedName("object_id")
private String mObjectId;
@SerializedName("title")
private String mTitle;
@SerializedName("type")
private String mType;
@SerializedName("url")
private String mUrl;
public List<Child> getChilds() {
return mChilds;
}
public void setChilds(List<Child> childs) {
mChilds = childs;
}
public Long getID() {
return mID;
}
public void setID(Long iD) {
mID = iD;
}
public String getMenuItemParent() {
return mMenuItemParent;
}
public void setMenuItemParent(String menuItemParent) {
mMenuItemParent = menuItemParent;
}
public String getObject() {
return mObject;
}
public void setObject(String object) {
mObject = object;
}
public String getObjectId() {
return mObjectId;
}
public void setObjectId(String objectId) {
mObjectId = objectId;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public String getType() {
return mType;
}
public void setType(String type) {
mType = type;
}
public String getUrl() {
return mUrl;
}
public void setUrl(String url) {
mUrl = url;
}
}
从Datum子类来看,
public class Child {
@SerializedName("childs")
private List<Child> mChilds;
@SerializedName("ID")
private Long mID;
@SerializedName("menu_item_parent")
private String mMenuItemParent;
@SerializedName("object")
private String mObject;
@SerializedName("object_id")
private String mObjectId;
@SerializedName("title")
private String mTitle;
@SerializedName("type")
private String mType;
@SerializedName("url")
private String mUrl;
public List<Child> getChilds() {
return mChilds;
}
public void setChilds(List<Child> childs) {
mChilds = childs;
}
public Long getID() {
return mID;
}
public void setID(Long iD) {
mID = iD;
}
public String getMenuItemParent() {
return mMenuItemParent;
}
public void setMenuItemParent(String menuItemParent) {
mMenuItemParent = menuItemParent;
}
public String getObject() {
return mObject;
}
public void setObject(String object) {
mObject = object;
}
public String getObjectId() {
return mObjectId;
}
public void setObjectId(String objectId) {
mObjectId = objectId;
}
public String getTitle() {
return mTitle;
}
public void setTitle(String title) {
mTitle = title;
}
public String getType() {
return mType;
}
public void setType(String type) {
mType = type;
}
public String getUrl() {
return mUrl;
}
public void setUrl(String url) {
mUrl = url;
}
@Override
public String toString() {
return "Child{" +
"mChilds=" + mChilds +
",mID=" + mID +
",mMenuItemParent='" + mMenuItemParent + '\'' +
",mObject='" + mObject + '\'' +
",mObjectId='" + mObjectId + '\'' +
",mTitle='" + mTitle + '\'' +
",mType='" + mType + '\'' +
",mUrl='" + mUrl + '\'' +
'}';
}
}
所以我想从Web服务获取数据,而json数据在子级中有多个子级,所以我完全感到困惑Nd尝试了很多事情,但是Nd onFailure遇到了同样的错误,所以我认为问题在mainactivity之内。
我的目标是从子班获得头衔。
解决方法
修改后的答案
如果您想从title
列表中获取Child
List<Child> childList = response.body().getData().get(position).getChilds();
然后您可以像这样从title
访问childList
。
String title = childList.get(position).getTitle();
修改
访问title
类的Child
//First we will add child data in childList
List<Child> childList = new ArrayList<>();
for(int i=0;i< response.body().getData().size();i++){
childList.add(response.body().getData().get(i).getChilds());
}
//for access title in child list
for(int i=0;i<childList.size();i++){
//we suppose you want to show all title of the child class in Logs
Log.e("title"," "+childList.get(i).getTitle());
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。