2015-12-22 5 views
0

Я делаю POST мой класс пользователя с разбором и вижу его на моей панели инструментов. При попытке запросить все из них он возвращает мне точное число объектов, но все поля равны нулю или 0.Android Parse Object null fileds

ParseQuery<User> query = ParseQuery.getQuery(PARSE_USER); 
      query.findInBackground(new FindCallback<User>() { 
       @Override 
       public void done(List<User> list, com.parse.ParseException e) { 
        if (e == null) { 
         for (User user : list) { 
          Log.v("user:", user.toString()); 
         } 
         //mListView.setAdapter(new LoveBoardAdapter(mCtx, list)); 
        } else { 
         Toast.makeText(mCtx, getString(R.string.internet_error), Toast.LENGTH_LONG).show(); 
        } 
       } 
      }); 

EDIT:

Это постоянный и мой User.class

private final String PARSE_USER = "User"; 


@ParseClassName("User") 
public class User extends ParseObject { 

    private int age; 
    private String name; 
    private String gender; 
    private String contact; 
    private String bio; 
    private String city; 
    private int likes; 

    public User() { 
     super(); 
    } 

    public User(int age, String name, String gender, String contact, String bio, String city, int likes) { 
     this.age = age; 
     this.name = name; 
     this.gender = gender; 
     this.contact = contact; 
     this.bio = bio; 
     this.city = city; 
     this.likes = likes; 
    } 

    public int getLikes() { 
     return likes; 
    } 

    public void setLikes(int likes) { 
     this.likes = likes; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getGender() { 
     return gender; 
    } 

    public void setGender(String gender) { 
     this.gender = gender; 
    } 

    public String getContact() { 
     return contact; 
    } 

    public void setContact(String contact) { 
     this.contact = contact; 
    } 

    public String getBio() { 
     return bio; 
    } 

    public void setBio(String bio) { 
     this.bio = bio; 
    } 

    public String getCity() { 
     return city; 
    } 

    public void setCity(String city) { 
     this.city = city; 
    } 

    @Override 
    public String toString() { 
     return "User{" + 
       "age=" + age + 
       ", name='" + name + '\'' + 
       ", gender='" + gender + '\'' + 
       ", contact='" + contact + '\'' + 
       ", bio='" + bio + '\'' + 
       ", city='" + city + '\'' + 
       ", likes=" + likes + 
       '}'; 
    } 
} 

ответ

1

Поскольку таблица пользователя по умолчанию, изменить:

ParseQuery<User> query = ParseQuery.getQuery(PARSE_USER); 
     query.findInBackground(new FindCallback<User>() { 
      @Override 
      public void done(List<User> list, com.parse.ParseException e) { 
       if (e == null) { 
        for (User user : list) { 
         Log.v("user:", user.toString()); 
        } 
        //mListView.setAdapter(new LoveBoardAdapter(mCtx, list)); 
       } else { 
        Toast.makeText(mCtx, getString(R.string.internet_error), Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 

Чтобы

ParseQuery<ParseUser> query = ParseUser.getQuery(); 
     query.findInBackground(new FindCallback<User>() { 
      @Override 
      public void done(List<ParseUser> list, ParseException e) { 
       if (e == null) { 
        for (User user : list) { 
         Log.v("user:", user.toString()); 
        } 
        //mListView.setAdapter(new LoveBoardAdapter(mCtx, list)); 
       } else { 
        Toast.makeText(mCtx, getString(R.string.internet_error), Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
+0

Это мой собственный класс пользователей, не ParseUser –

+0

вы можете опубликовать POST запрос. –

+0

Хорошо. это запутывает в «ParseQuery.getQuery (PARSE_USER)», вы использовали PARSE_USER, но в «новом FindCallback () {« вы использовали пользователя. SO является PARSE_USER так же, как и пользователь? –

0

Попробуйте изменить из

@ParseClassName("User") 

в

@ParseClassName("_User") 
2

Мои примечания:

  • аннотаций Анализировать заботится не настройки полей данных, так нет необходимости что.
  • Подэлементы Getters и Setters для подпрограммы Parse должны использовать аксессоров из класса ParseObject.
  • Создайте константы для столбцов класса, уменьшите риск неправильного обращения, и вы можете использовать завершение кода.
  • В запросе вы должны использовать класс для лучшей безопасности типов (UserData.class)
  • Подумайте о переименовании пользовательского класса пользователя в нечто другое (UserData в этом примере), поскольку он сталкивается со встроенным классом User. (Даже если его фактически _User)
  • Подкласс может использоваться для хранения данных в классе User (_User), но это другой вопрос.
  • Не забудьте зарегистрировать ParseObject.registerSubclass (UserData.class); в MainActivity

Протестировано со следующим кодом, UserData класса:

@ParseClassName("UserData") 
public class UserData extends ParseObject { 

    // Setup the constant for the column names here 
    public static final String name = "name"; 
    public static final String city = "city"; 
    // : 

    public UserData() { 
    } 

    public String getName() { 
     // Get data using ParseObject 
     return getString(UserData.name); 
    } 

    public void setName(String newName) { 
     // Store data using ParseObject 
     put(UserData.name, newName); 
    } 

    // More setters and getters 
    // : 
} 

ShowUsers активность:

public class ShowUsers extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_show_users); 

     ParseQuery<UserData> query = ParseQuery.getQuery(UserData.class); 
     query.findInBackground(new FindCallback<UserData>() { 
      @Override 
      public void done(List<UserData> objects, ParseException e) { 
       if (e == null) { 
        for (UserData userData : objects) { 
         // Access with getter 
         Log.v("user name:", userData.getName()); 
         // Access with type safe constant 
         Log.v("city: ", userData.getString(UserData.city)); 
        } 
       } 
      } 
     }); 
    } 
}