2

Right now I am trying to save a custom made object to the parse cloud. I am following this:

https://parse.com/docs/android_guide#objects

http://blog.parse.com/2013/05/30/parse-on-android-just-got-classier/

Unfortunately, I get this error:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spicycurryman.hitup/com.spicycurryman.hitup.MainActivity}: java.lang.IllegalArgumentException: invalid type for value: class com.spicycurryman.hitup.model.HitupEvent



  Caused by: java.lang.IllegalArgumentException: invalid type for value: class com.spicycurryman.hitup.model.HitupEvent
            at com.parse.ParseObject.put(ParseObject.java:2746)
            at com.spicycurryman.hitup.MainActivity.addEvent(MainActivity.java:257)
            at com.spicycurryman.hitup.MainActivity.onCreate(MainActivity.java:84)

I guess it was caused by the custom object class I created:

package com.spicycurryman.hitup.model;

/**
 * Created by Spicycurryman on 12/31/14.
 */

import java.util.ArrayList;

public class HitupEvent {
    private String title, thumbnailUrl;
    private int year;
    private double rating;
    private ArrayList<String> genre;

    public HitupEvent() {
    }

    public HitupEvent(String name, String thumbnailUrl, int year, double rating,
                 ArrayList<String> genre) {
        this.title = name;
        this.thumbnailUrl = thumbnailUrl;
        this.year = year;
        this.rating = rating;
        this.genre = genre;
    }

    public String getTitle() {
        return title;
    }

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

    public String getThumbnailUrl() {
        return thumbnailUrl;
    }

    public void setThumbnailUrl(String thumbnailUrl) {
        this.thumbnailUrl = thumbnailUrl;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }

    public double getRating() {
        return rating;
    }

    public void setRating(double rating) {
        this.rating = rating;
    }

    public ArrayList<String> getGenre() {
        return genre;
    }

    public void setGenre(ArrayList<String> genre) {
        this.genre = genre;
    }

}

and I am storing the custom object like this:

   HitupEvent hitupEvent = new HitupEvent();




        hitupEvent.setTitle("Rohit "+ "wants to "+WhatEvent_String_main+ " at "+ WhereEvent_String_main +" on "+ WhenEventDate_String_main +" ,"+ WhenEventTime_String_main   );





        hitupEvent.setThumbnailUrl(roro_photo);

        hitupEvent.setGenre(singleAddress);


        hitupEventList.add(hitupEvent);

        adapter.notifyDataSetChanged();


        ParseObject event = new ParseObject("event");
        event.put("newHitupEvent", hitupEvent);


        event.saveInBackground();
        event.pinInBackground();

What would be the proper way to store custom objects?

1
  • can you post your whole code properly Commented Feb 17, 2015 at 6:34

1 Answer 1

1

If you wish to use it this way you should make HitUpEvent subclass ParseObject ,

You can check out Parse documentation : https://parse.com/docs/android_guide#subclasses to learn more about this.

Subclassing ParseObject

To create a ParseObject subclass:

Declare a subclass which extends ParseObject. Add a @ParseClassName annotation. Its value should be the string you would pass into the ParseObject constructor, and makes all future class name references unnecessary.

Ensure that your subclass has a public default (i.e. zero-argument) constructor. You must not modify any ParseObject fields in this constructor.

CallParseObject.registerSubclass(YourClass.class) in your Application constructor before calling Parse.initialize().

Another option is to use a generic ParseObject and do something like this:

event.put("genre", "hip-hop");
event.put("title", "tigga");
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

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