Deserialize Json and put the values in views

3

Well, what I want to do is an activity where a Json is consumed. The problem is that all tutorials show only how to return a Json in a listview. What I want is a structure something like this:

  • Title: Textview ;
  • Image: Imageview ;
  • Text: Textview ;
  • This comes from a single Json, as in the example:

    { 
     "item":[
          { "titulo":"Recomendação",
            "imagem":"http://i.imgur.com/Bl0jBTc.png",
            "texto":"Texto",
          }
         ]
     }
    

    I currently use Picasso to upload images. What would be a good way to do it?

        
    asked by anonymous 16.03.2017 / 17:14

    4 answers

    4

    You first need to deserialize Json to get each of the parts.

    String json = "{ \"item\":[{ \"titulo\":\"Recomendação\",\"imagem\":\"http://i.imgur.com/Bl0jBTc.png\", \"texto\":\"Texto\"} ]}";
    String titulo;
    String imagem;
    String texto;
    try {
        JSONObject jsonObject = new JSONObject(json);
        JSONArray jsonArray = jsonObject.getJSONArray("item");
    
        JSONObject jsonArrayJSONObject = jsonArray.getJSONObject(0);
        titulo = jsonArrayJSONObject.getString("titulo");
        imagem = jsonArrayJSONObject.getString("imagem");
        texto = jsonArrayJSONObject.getString("texto");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    

    Use the string image to download the image.
    The others place them in the respective TextView.

        
    16.03.2017 / 18:20
    2

    Try this:

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.squareup.picasso.Picasso;
    
    import org.json.JSONArray;
    import org.json.JSONObject;
    
    public class MainActivity extends AppCompatActivity {
    
    
    
         private final String JSON_CONTENT = "{ \"item\": [{ \"titulo\": \"Recomendação\", \"imagem\": \"http://i.imgur.com/Bl0jBTc.png\", \"texto\": \"Texto\" }] }";
    
        TextView titulo;
        TextView texto;
        ImageView imagem;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //Carregando os elementos da tela
            titulo = TextView.class.cast(findViewById(R.id.titulo));
            texto = TextView.class.cast(findViewById(R.id.texto));
            imagem = ImageView.class.cast(findViewById(R.id.imagem));
    
    
            try{
                // transformamos a String em JsonObjetc (provavelmente, aqui voce deve pegar da web)
                final JSONObject json = new JSONObject(JSON_CONTENT);
                // Pegamos a lista item!
                final JSONArray lista = json.getJSONArray("item");
                // neste caso, vamos pegar o primeiro item da lista!
                final JSONObject jsonObject = lista.getJSONObject(0);
                // Setamos o titulo
                titulo.setText(jsonObject.getString("titulo"));
                // Setamos o texto
                texto.setText(jsonObject.getString("texto"));
                //adicionamos a imagem através do picasso
                Picasso.with(getApplicationContext()).load( jsonObject.getString("imagem")).into(imagem);
            }catch (final Exception e){
                e.printStackTrace();
            }
        }
    
    }
    
        
    16.03.2017 / 18:31
    0

    You get a JSON like this:

     { 
         "itens":[
              { "titulo":"Titulo 0001",
                "texto":"Lorem ipsum dolor sit amet, consectetur ",
                "imagem":"http://seurepositorio/p/imagem1.png" },
    
              { "titulo":"Titulo 0002",
                 "texto":"adipiscing elit, sed do eiusmod tempor ",
                 "imagem":"http://seurepositorio/p/imagem2.png" }
    
               ....
               e segue...
    
             ]
       }
    

    And make another request to get the images a code like this:

    URL url = new URL(imagem);
    Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    imageView.setImageBitmap(bmp);
    
        
    16.03.2017 / 17:32
    -1

    json would come title, url image, and text. If it's in a list, you need to create a listview with an adpter to work as you need, now if it's a simple screen, you just deserialize json and put it in your layout.

    {"titulo":"seu titulo", "imagem":"http://urlimagem.com/imagem.jpg", "texto":"seu texto"}
    
        
    16.03.2017 / 17:29