2016-03-31 5 views
0

Ich habe zwei Klassen wie folgt aus:Android: erstellen Liste unabhängig von Objekttyp

public class User implements Serializable { 
    String id; 
    String name; 
    String email; 
    String age; 
    String full_name; 

    public String getAboutCustomer() { 
     return aboutCustomer; 
    } 

    public void setAboutCustomer(String aboutCustomer) { 
     this.aboutCustomer = aboutCustomer; 
    } 

    String aboutCustomer; 

    public void setFull_name(String full_name) { 
     this.full_name = full_name; 
    } 

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


    public String getFull_name() { 
     return full_name; 
    } 

    public String getAge() { 
     return age; 
    } 


    public User() { 
    } 

    public User(String id, String name, String email) { 
     this.id = id; 
     this.name = name; 
     this.email = email; 
    } 



    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 
} 



public class Message implements Serializable { 
    String id, message, createdAt, type; 
    User user; 

    public Message() { 
    } 

    public Message(String id, String message, String createdAt, User user) { 
     this.id = id; 
     this.message = message; 
     this.createdAt = createdAt; 
     this.user = user; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public String getCreatedAt() { 
     return createdAt; 
    } 

    public void setCreatedAt(String createdAt) { 
     this.createdAt = createdAt; 
    } 

    public User getUser() { 
     return user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 

    public String getType(){ 
     return type; 
    } 

    public void setType(String type){ 
     this.type = type; 
    } 
} 

und ich möchte eine Liste von beiden von ihnen bekommen. Das Problem ist, ich möchte eine Methode erstellen, die für beide ist, also ist der Typ der Klasse nicht relevant. Hier ist, was ich versucht habe, so weit:

public List<?> getList(){ 
     String s = sharedPrefsLists.getString(SharedPrefsInformation.GET_MAIN_FEED_LIST, null); 
     return new Gson().fromJson(s, 
       new TypeToken<List<?>>() { 
       }.getType()); 
    } 

Aber wenn ich versuche, etwas wie folgt aus: Liste Luser = getList(); Es funktioniert nicht. Android sagt, dass ich casten, die Variable ändern oder die Methode den Typ "Benutzer" zurückgeben muss.

Wie kann ich eine Liste unabhängig vom Typ des Objekts erstellen?

Antwort

1

Sie können eine generische Methode machen, indem Sie die folgenden Schritte aus:

public <T> List<T> getList(){ 
    String s = sharedPrefsLists.getString(SharedPrefsInformation.GET_MAIN_FEED_LIST, null); 
    return new Gson().fromJson(s, 
      new TypeToken<List<T>>() { 
      }.getType()); 
} 

Und dann rufen Sie die Methode das Ergebnis in eine generische Liste zuweisen wie folgt:

List<User> users = getList(); 

aber ich weiß nicht, wie Sie erwarten, dass diese Methode nützlich ist, ohne die gemeinsam genutzte Präferenz zu übergeben oder irgendwie zuzulassen, dass eine andere JSON-Zeichenfolge analysiert wird.

+1

Vielen Dank! Du hast meinen Tag gemacht :) – blueman3399

+1

Gern geschehen. –