i'm new to Android & Java and have a question regarding my server-app-communication. My server always returns a JSON output with "Code", "Message" and "Data". Like this:
e.g: {"code":200,"msg":"success","data":[{"track_id":123},{"track_id":124},{"track_id":125}]}
e.g: {"code":200,"msg":"success","data":[{"type":"car","length":100},{"type":"train","length":500},{"type":"foot","length":3}]}
I want to use a class like this to work with the data:
public class ServerResponse {
private int code;
private String msg;
private List<> data;
}
But here is my problem. I don't want to give a specific type like "car", "login" etc. to the List. Depending on my request I want to create the ServerResponse-class with a List-Type "car", another with List-Type "Locations" etc.
Is there a way to use the class ServerResponse with multiple type of ArrayLists or do I have to copy this class several times for every list-type I'd like to use?
I'm sorry if there's already a solution somewhere here, but I do not know what I have to search for. And for what I searched, I couldn't find a propper solution.
Best regards Michael
Look into Java Generic Types.
public class ServerResponse<T> {
private int code;
private String msg;
private List<T> data;
}
T can be whatever type you want it to be, so your list will then be of that type. Then your getter/setter methods can return or accept type T.
Now let us assume your response was for a Car object. You would do this
private ServerResponse<Car> mCarResponse = new ServerResponse<>();
Now you can put a method inside your ServerResponse class like this.
public class ServerResponse<T> {
private int code;
private String msg;
private List<T> data;
public List<T> getResponseObjectList(){
return data;
}
}
You will now get a List<Car>
object.