0

I am making POST my user class with parse and see it at my dashboard. When I try to query all of them it returns me exact number of objects but all the fields are null or 0.

 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:

This is constant and my 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 +
                '}';
    }
}

3 Answers 3

2

My notes:

  • The Parse annotation takes care of setting up the data fields so no need for that.
  • The Getters and Setters for a Parse subclass should use the accessors from the ParseObject class.
  • Create constants for your class columns, reduces risk for mispelling and you can use the code completion.
  • In the query you should use the class for better type safety (UserData.class)
  • Consider renaming the custom User class to something else (UserData in this example) as is collides with the builtin User class. (Even if its actually _User)
  • A subclass can be used to store data in the system User(_User) class but that is a different question.
  • Remember to register ParseObject.registerSubclass(UserData.class); in the MainActivity

Tested with the following code, UserData class:

@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 activity:

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));
                    }
                }
            }
        });
    }
}
Sign up to request clarification or add additional context in comments.

Comments

1

Since it is the default user table , change :

 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();
                } 
            } 
        }); 

To

    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();
                } 
            } 
        }); 

5 Comments

It is my own user class, not ParseUser
can you post your POST query.
Ok. this is confusing in "ParseQuery.getQuery(PARSE_USER)" you have used PARSE_USER but in "new FindCallback<User>() { " you have used User. SO is PARSE_USER same as User ?
Edited. The query is just String "User"
0

Try to change from

@ParseClassName("User")

to

@ParseClassName("_User")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.