Я использую ParseSDK для проекта Android. Но у меня проблема с доступом к списку ParseObjects из другого класса ParseObject. Я пробовал много чего, но мне ничего не помогало. Ниже я помещаю свой код.
Team team;
List<User> members = team.getMembers();
for(User user : members) {
user.getName();
}
@ParseClassName("Team")
public class Team extends ParseObject {
public static class Constant {
private static final String CREATED_BY = "createdBy";
private static final String NAME = "name";
public static final String CODE = "code";
private static final String PARTICIPANTS = "participants";
public static final String IS_ACTIVE = "isActive";
}
private String name;
private String code;
private User createdBy;
private List<User> members;
private int isActive;
public String getName() {
return getString(Constant.NAME);
}
public void setName(String name) {
this.name = name;
put(Constant.NAME, name);
}
public String getCode() {
return getString(Constant.CODE);
}
public void setCode(String code) {
this.code = code;
put(Constant.CODE, code);
}
public User getCreatedBy() {
return (User) getParseUser(Constant.CREATED_BY);
}
public void setCreatedBy(User createdBy) {
this.createdBy = createdBy;
put(Constant.CREATED_BY, createdBy);
}
public List<User> getMembers() {
return getList(Constant.PARTICIPANTS);
}
public void setMembers(List<User> members) {
this.members = members;
put(Constant.PARTICIPANTS, members);
}
public int getIsActive() {
return getInt(Constant.IS_ACTIVE);
}
public void setIsActive(int isActive) {
this.isActive = isActive;
put(Constant.IS_ACTIVE, isActive);
}
@ParseClassName("_User")
public class User extends ParseUser {
private static class Constant {
private static final String NAME = "name";
private static final String GENDER = "gender";
private static final String BIRTHDATE = "birthdate";
private static final String FACEBOOK_ID = "facebookId";
private static final String AVATAR = "avatar";
private static final String WEIGHT = "weight";
private static final String WEIGHT_UNIT = "weightUnit";
private static final String EXPERIENCE_LEVEL = "experienceLevel";
private static final String GOALS = "goals";
private static final String SCORE = "score";
private static final String IS_PREMIUM = "isPremium";
private static final String IS_TRIAL_PERIOD = "isTrialPeriod";
private static final String TOTAL_WORKOUT_BUILDS = "totalWorkoutBuilds";
}
private String name;
private String gender;
private String facebookId;
private Date birthday;
private ParseFile avatar;
private int weight;
private String weighUnit;
private String experienceLevel;
private List<Goal> goals;
private int score;
private int isPremium;
private int isTrialPeriod;
private int totalWorkoutBuilds;
private String emailAddress;
public User() {
super();
}
public String getName() {
return validateStringResult(Constant.NAME);
}
public void setName(String name) {
put(Constant.NAME, name);
}
public String getGender() {
return validateStringResult(Constant.GENDER);
}
public void setGender(String gender) {
put(Constant.GENDER, gender);
}
public Date getBirthday() {
return getDate(Constant.BIRTHDATE);
}
public void setBirthday(Date birthday) {
put(Constant.BIRTHDATE, birthday);
}
public String getFacebookId() {
return validateStringResult(Constant.FACEBOOK_ID);
}
public void setFacebookId(String facebookId) {
put(Constant.FACEBOOK_ID, facebookId);
}
public ParseFile getAvatar() {
return getParseFile(Constant.AVATAR);
}
public void setAvatar(ParseFile avatar) {
put(Constant.AVATAR, avatar);
}
public int getWeight() {
return getInt(Constant.WEIGHT);
}
public void setWeight(int weight) {
put(Constant.WEIGHT, weight);
}
public String getWeightUnit() {
return validateStringResult(Constant.WEIGHT_UNIT);
}
public void setWeightUnit(String weightUnit) {
put(Constant.WEIGHT_UNIT, weightUnit);
}
public ExperienceLevel getExperienceLevel() {
final String result = validateStringResult(Constant.EXPERIENCE_LEVEL);
if (result.equalsIgnoreCase("intermediate")) {
return ExperienceLevel.INTERMEDIATE;
} else if (result.equalsIgnoreCase("advanced")) {
return ExperienceLevel.ADVANCED;
} else {
return ExperienceLevel.BEGINNER;
}
}
public void setExperienceLevel(String experienceLevel) {
put(Constant.EXPERIENCE_LEVEL, experienceLevel);
}
public List<Goal> getGoals() {
return getList(Constant.GOALS);
}
public void setGoals(List<Goal> goals) {
put(Constant.GOALS, goals);
}
public int getScore() {
return getInt(Constant.SCORE);
}
public void setScore(int score) {
put(Constant.SCORE, score);
}
public boolean isPremium() {
return getBoolean(Constant.IS_PREMIUM);
}
public void setPremium(boolean premium) {
put(Constant.IS_PREMIUM, premium);
}
public boolean isTrialPeriod() {
return getBoolean(Constant.IS_TRIAL_PERIOD);
}
public void setTrialPeriod(boolean trialPeriod) {
put(Constant.IS_TRIAL_PERIOD, trialPeriod);
}
public int getTotalWorkoutBuilds() {
return getInt(Constant.TOTAL_WORKOUT_BUILDS);
}
public void setTotalWorkoutBuilds(int totalWorkoutBuilds) {
put(Constant.TOTAL_WORKOUT_BUILDS, totalWorkoutBuilds);
}
private String validateStringResult(String key) {
final String result = getString(key);
return result == null ? "" : result;
}
E/AndroidRuntime: НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.kineticoach.traveltrainer, PID: 22022 java.lang.IllegalStateException: ParseObject не имеет данных для «имени». Вызовите fetchIfNeeded(), чтобы получить данные. в com.parse.ParseObject.checkGetAccess(ParseObject.java:3607) в com.parse.ParseObject.getString(ParseObject.java:3186) в com.kineticoach.traveltrainer.models.objects.User.getName(User.java:25 ) на com.kineticoach.traveltrainer.fragments.ProfileFragment.lambda$loadUserData$1$ProfileFragment(ProfileFragment.java:153) на com.kineticoach.traveltrainer.fragments.-$$Lambda$ProfileFragment$Sdpefi97hyh_jTMOE2pWx3FVbo8.run(Неизвестный источник: 2) на android.os.Handler.handleCallback(Handler.java:874) на android.os.Handler.dispatchMessage(Handler.java:100) на android.os.Looper.loop(Looper.java:198) на android.app. ActivityThread.main(ActivityThread.java:6729) в java.lang.reflect.Method.invoke(собственный метод) в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) в com.android. внутренний.os.ZygoteInit.main(ZygoteInit.java:858)