1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Trabalhando com Service + Json + Parcelable

Bom dia pessoal,estou precisando ler um objeto gravado em um json e utiliza-lo no meu serviço que já está criado.

O json possui dois atributos: id e um array de itens. O problema ocorre na leitura do array de itens. Acredito que seja algo na implementação do Parcelable na classe CarrosselItem. Quando imprimo no logcat o id aparece normalmente e array de itens aparece nulo.

Para ler o Json utilizo a API GSON. Segue as classe que construi para ler o objeto a partir do json.

Classe Carrossel

package com.yousee.player.carrossel;

import java.util.ArrayList;
import java.util.Iterator;

public class Carrossel {

    private int id;

    private static ArrayList<CarrosselItem> itens;

    private static Iterator<CarrosselItem> it = null;

    private static CarrosselItem carItem;


    public Carrossel() {
        super();
    }

    public Carrossel(int id, ArrayList<CarrosselItem> Items) {
        super();
        this.id = id;
        itens = Items;
        it = itens.iterator();
    }

    public int getId() {
        return id;
    }

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

    public ArrayList<CarrosselItem> getCarrosselItemS() {
        return itens;
    }

    public static void setCarrosselItemS(ArrayList<CarrosselItem> Items) {
        itens= Items;
    }

    @Override
    public String toString() {
        return "Carrossel [id=" + id + ", itens=" + itens + "]";
    }

    /**
     * Retorna o próximo item do carrossel.  
     * @return
     */
    public CarrosselItem getNext(){

        if(!it.hasNext()){
            it = itens.iterator(); 
        }

        carItem = it.next();        
        return carItem;            
    }

}

Classe CarrosselItem

import android.os.Parcel;
import android.os.Parcelable;

public class CarrosselItem implements Parcelable{
    private String tipo;
    private String tempo;    
    private String arquivo;
    private String is_streamingl;
    private String inicio_fluxo;

    public static final Parcelable.Creator<CarrosselItem> CREATOR = new Parcelable.Creator<CarrosselItem>() {
        public CarrosselItem createFromParcel(Parcel in) {
            return new CarrosselItem(in);
        }

        public CarrosselItem[] newArray(int size) {
            return new CarrosselItem[size];
        }
    };

    public CarrosselItem(Parcel in) {
        readFromParcel(in);
    }

    public String getTipo() {
        return tipo;
    }
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
    public String getTempo() {
        return tempo;
    }
    public void setTempo(String tempo) {
        this.tempo = tempo;
    }

    public String getArquivo() {
        return arquivo;
    }
    public void setArquivo(String arquivo) {
        this.arquivo = arquivo;
    }
    public String getIs_streamingl() {
        return is_streamingl;
    }
    public void setIs_streamingl(String is_streamingl) {
        this.is_streamingl = is_streamingl;
    }
    public String getInicio_fluxo() {
        return inicio_fluxo;
    }
    public void setInicio_fluxo(String inicio_fluxo) {
        this.inicio_fluxo = inicio_fluxo;
    }

    @Override
    public String toString() {
        return "Item [tipo=" + tipo + ", tempo=" + tempo + ", arquivo=" + arquivo + ", is_streamingl=" + is_streamingl
                + ", inicio_fluxo=" + inicio_fluxo + "]";
    }
    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(tipo);
        dest.writeString(tempo);
        dest.writeString(arquivo);
        dest.writeString(is_streamingl);
        dest.writeString(inicio_fluxo);

    }

    private void readFromParcel(Parcel in) {

        tipo = in.readString();
        tempo= in.readString();
        arquivo= in.readString();
        is_streamingl = in.readString();
        inicio_fluxo = in.readString();
    }  

}

Leitura do json

try{            
           FileInputStream is = new FileInputStream(json);
           InputStreamReader isr = new InputStreamReader(is);            
           JsonReader reader = new JsonReader(isr);

               Gson gson = new Gson();

           Carrossel car = gson.fromJson(reader, Carrossel.class);

           Log.d(TAG, "Carrossel: " + car.getId());
           Log.d(TAG,"CarrosselItems: " + car.getCarrosselItemS());

               reader.close();
           isr.close();
           is.close();

    }catch(FileNotFoundException e){
        Log.e(TAG, "Arquivo  " + json +  " não foi encontrado.",e);
    } catch (IOException e) {
        Log.e(TAG, "Não foi possivel fechar o arquivo " + json ,e);
    }

Json Exemplo

{
    "id":"1","itens":[
        {"tipo":"i","tempo":"30","arquivo":"i_25.mp4","is_streaming":"N","inicio_fluxo":""},
        {"tipo":"i","tempo":"30","arquivo":"i_26.mp4","is_streaming":"N","inicio_fluxo":""}
    ]
}

Alguém tem alguma ideia do pode estar ocorrendo ?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags android json ou faça a sua própria pergunta.