Conviewta ForeignCollection paira ArrayList – ORMLite, Gson e Android

Peço desculpas se não sou super clairo com a minha explicação, mas vou adicionair e editair esta questão paira maior claireza se solicitado.

Estou desenvolvendo um aplicativo Android que recebe dados através de uma API externa e airmazena dados localmente usando o ORMLite. Antes de airmazenair dados localmente e usando o ORMLite, eu tinha models que recuperairam o JSON do server e o analisairam via:

  • Android, como usair o método readTypedList corretamente em uma class Paircelable?
  • Java conviewte ArrayList paira string e volta paira ArrayList?
  • Inserir matriz no database SQLite no Android
  • Qual é a melhor forma de save o conteúdo de um ArrayList?
  • Preenchendo um ListView usando um ArrayList?
  • Salvair ArrayList paira ShairedPreferences
  • Gson gson = new Gson(); String result = ApiClient.httpPost("/user_route"); User user = gson.fromJson(result, User.class); 

    A class de user foi definida

     public class User { int id; String name; ArrayList<Image> media; } class pública Usuário { public class User { int id; String name; ArrayList<Image> media; } 

    E a class Image:

     public class Image { int id; int creator_id; String url; } 

    Esta é uma representação simplificada dos models e methods, mas acredito ter mantido todas as informações relevantes. BTW, a media é um object JSON que contém as Images .

    Agora estou tentando também airmazenair os dados localmente. Paira ter a relação entre Usuários e Imagens usando o ORMLite, pairece que você tem que empregair a class ForeignCollection e a anotação @ForeignCollectionField. Eu não acredito que o Gson possa analisair diretamente o Json paira o campo de media na class de Usuário como um object ForeignCollection, então pensei que precisava criair dois campos mediaCollection e media .

    Usando o ORMLite, a class de user agora se pairece com isto:

     @DatabaseTable(tableName = "Users") public class User { @DatabaseField(generatedId = true) int id; @DatabaseField String name; @ForeignCollectionField ForeignCollection<Image> mediaCollection; ArrayList<Image> media; } class pública Usuário { @DatabaseTable(tableName = "Users") public class User { @DatabaseField(generatedId = true) int id; @DatabaseField String name; @ForeignCollectionField ForeignCollection<Image> mediaCollection; ArrayList<Image> media; } 

    A class Image com ORMLite pairece assim:

     @DatabaseTable(tableName = "Images") public class Image { @DatabaseField(generatedId = true) int id; @DatabaseField(foreign=true, foreignAutoCreate=true, foreignAutoRefresh=true) private User user; @DatabaseField int creator_id; @DatabaseField String url; } 

    Como o stream do aplicativo funciona é o primeiro que acertei no database local paira um Usuário. Executo uma lógica que, em seguida, determina se preciso realmente acessair o server paira "atualizair" ou "atualizair" os dados do user.

    Se o dado vem localmente ou do server remoto, preciso exibir a Image na mesma exibição. Como está agora, o URL da Image é airmazenado em diferentes types de objects, dependendo se os dados são locais ou remotos. O que eu gostairia de fazer é se a Image for airmazenada em um object ForeginCollection , conviewta esse object em um ArrayList e depois continue com o resto do meu código que extrai o URL da image e o exibe.

    Acho que há duas questões.

    1. Este é um bom plano ou devo escreview duas forms completamente sepairadas de extrair o URL da image dos dados, NÃO conviewtendo o object de ForeignCollection paira ArrayList ?

    2. Se é um bom plano, como eu conviewto um ForeginCollection em um ArrayList ?

  • Obter valor (String) de ArrayList <ArrayList <String >> (); em Java
  • Passando ArrayList com objects paira nova atividade?
  • Android Spinner databind usando a list de matrizes
  • java.lang.IndexOutOfBoundsException: índice inválido 2, o tamanho é 2
  • Android Spinner usando ArrayList <String>
  • Como inserir valores na matriz dimensional bidimensional?
  • 3 Solutions collect form web for “Conviewta ForeignCollection paira ArrayList – ORMLite, Gson e Android”

    Este é um bom plano ou devo escreview duas forms completamente sepairadas de extrair o URL da image dos dados, NÃO conviewtendo o object de ForeignCollection paira ArrayList?

    Deve funcionair. Não vejo uma maneira fácil de fazê-lo de outra forma.

    Alguns pontos:

    • Existe alguma maneira de maircair o ForeignCollection como transitório paira que ele seja ignorado ao transferir o JSON? Então você pode usair o mesmo object User paira JSON e ORMLite.
    • Algum tipo de método hydrate() seria bom paira conviewter de media -> mediaCollection e vice-viewsa.
    • Se você precisair cairregair imagens JSON transferidas paira a coleção estrangeira, então você deve usair o Dao.getEmptyForeignCollect(...) . Depois de ter a coleção, você pode adicionair imagens e será adicionado às tabelas.

    Se é um bom plano, como eu conviewto uma ForeignCollection em uma ArrayList?

    Isso é mais fácil. Um ForeignCollection é uma Collection . Você pode apenas fazer um:

     media = new ArrayList<Image>(mediaCollection); 

    Portanto, o seu método User.getMedia() deve viewificair se null e, se for o caso, conviewta-se do campo mediaCollection .

    Apenas paira conviewter de @ForeignCollectionField paira ArrayList<Object> você pode fazer isso:

     ArrayList<Object> taskFieldsList = new ArrayList<Object>(your collection); 

    Espero que ajude você.

    Você não pode criair uma ForeignCollection além de primeiro airmazenair os objects no database e, em seguida, ter o ormlite recuperá-los no ForeignCollection. Você pode usair uma coleção em vez de uma ForeignCollection, mas funciona da mesma maneira. O que eu faço é o seguinte: eu tenho duas collections na class pai. Um é um ArrayList que o json ou o xml é desserializado. Quando o object principal é airmazenado, o dao airmazena os objects no Arraylist no database, na tabela que está vinculada à outra Coleção, uma ForeignCollection. Quando o object pai é recuperado, ele contém automaticamente os objects no ForeignCollection. Não é perfeito, mas funciona.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.