• 0
Sign in to follow this  
Heltinhu

RESOLVIDO - Help-me em Array Json aplicativo

Question

Olá galera estou com um probleminha aqui no meu desenvolvimento, estou criando um cardápio para restaurante, onde os dados virão lá do meu banco de dados Mysql certo. OK

Olha o meu array | Json como esta sendo retornado.....

Array
(
    [0] => Array
        (
            [id] => 1
            [categoria] => Pizzas
            [0] => Array
                (
                    [item] => Calabresa
                )

            [1] => Array
                (
                    [item] => Bacon
                )

            [2] => Array
                (
                    [item] => 4 Queijos
                )

        )

    [1] => Array
        (
            [id] => 2
            [categoria] => Bebidas
            [0] => Array
                (
                    [item] => Breja
                )

            [1] => Array
                (
                    [item] => Refri
                )

            [2] => Array
                (
                    [item] => Coca
                )

        )

    [2] => Array
        (
            [id] => 3
            [categoria] => Doces
            [0] => Array
                (
                    [item] => Pudim
                )

            [1] => Array
                (
                    [item] => Pavê
                )

            [2] => Array
                (
                    [item] => Paçoquinha
                )

        )

    [3] => Array
        (
            [id] => 4
            [categoria] => Combo
            [0] => Array
                (
                    [item] => Bacon + Coca
                )

            [1] => Array
                (
                    [item] => Calabresa + Refri
                )

            [2] => Array
                (
                    [item] => 4 Queijos + Refri + Pudim
                )

        )
)

e o olha o meu Json....

[{"id":"1","categoria":"Pizzas","0":{"item":"Calabresa"},"1":{"item":"Bacon"},"2":{"item":"4 Queijos"}},{"id":"2","categoria":"Bebidas","0":{"item":"Breja"},"1":{"item":"Refri"},"2":{"item":"Coca"}},{"id":"3","categoria":"Doces","0":{"item":"Pudim"},"1":{"item":"Pav\u00ea"},"2":{"item":"Pa\u00e7oquinha"}},{"id":"4","categoria":"Combo","0":{"item":"Bacon + Coca"},"1":{"item":"Calabresa + Refri"},"2":{"item":"4 Queijos + Refri + Pudim"}}]

Bom então sigamos para o problema, estou pegando esses dados lá no meu app android com essa seguinte função....

private void prepareLista(){
        lstGrupos = new ArrayList<String>();
        lstItensGrupo = new HashMap<String, List<Produto>>();

        StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try{
                            JSONArray pro = new JSONArray(response);

                            for(int i = 0; i<pro.length();i++){

                                JSONObject proObj = pro.getJSONObject(i);
                                lstGrupos.add(proObj.getString("categoria"));

                                List<Produto> foods = new ArrayList<>();
                                JSONArray itemArray = new JSONArray(response);
                                for(int j=0; j<itemArray.length();j++){
                                    JSONObject proItem = itemArray.getJSONObject(j);
                                    foods.add(new Produto(proItem.getString("item"),17.9));
                                }
                                    lstItensGrupo.put(lstGrupos.get(i),foods);
                            }
                            //cria um adaptador (BaseExpandableListAdapter) com os dados acima
                            listAdapter = new ExpandableListViewAdapter(MainActivity.this, lstGrupos, lstItensGrupo);
                            //define o apadtador do ExpandableListView
                            expListView.setAdapter(listAdapter);
                        }catch (JSONException e){
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
                    }
                });
        Volley.newRequestQueue(this).add(stringRequest);
    }

bom como vocês viram aí, ele me retorna todas as categorias Pizzas / Bebidas / Doces / Combo e conforme existe lá no dataBase só que não me retorna os itens destas categorias

Aqui olha se eu deixo assim.... 

foods.add(new Produto(proItem.getString("item"),17.9));

querendo que ele me traga os itens, não me retorna nadica de nada, agora se eu deixo assim

foods.add(new Produto(proItem.getString("categoria"),17.9));

ele me retorna as categorias e como sub-categorias as próprias categorias e não sei como resolver isso

 

Edited by Heltinhu
melhoramento da pergunta

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Boa galera com muito trampo e dor de cabeça consegui o que queria kkkkkkk, Ráá, Ráá, Ráá, Ráá, Ráá, + eu to rindo a toa kkkkkkkkkkk brinks galera, + segue o código que funfou

arrayPhp

<?php
//CONEXÃO COM BANCO DE DADOS
    $host = 'localhost'; 
    $user = 'root';
    $password = '';
    $database = 'testes';

$sqli = new mysqli($host, $user, $password);
if ($sqli->connect_error) {
    echo "<p>Erro ao Conectar: $sqli->connect_error</p>";
}
if (!$sqli->set_charset('utf8')) {
    echo "<p class='error'>O charset não é utf8: $sqli->error</p>";
}
if (!$sqli->select_db($database)) {
    // se o banco de dados não for encontrado
    echo "<p class='error'>Banco de dados não encontrado, chefe!</p>";
}
?>

<?php
//primeiro, busque apenas as categorias (pizzas, bebidas, lanches...)
$query = "STRING SQL PARA BUSCAR AS CATEGORIAS";

// execute a query
$result = $sqli->query($query);

// verifica se houve algum erro na execução da query
if ($sqli->error) {
    echo '<p class="error">Falha ao executar query, chefe!</p>' . $sqli->error;
    // se não houve erro algum e algum resultado foi encontrado
} elseif ($result->num_rows) {
    // busca os dados em formato de array associativo
    $dados = $result->fetch_all(MYSQLI_ASSOC);
} else { // se nenhum resultado foi encontrado
    echo '<p class="warning">Nenhuma categoria encontrada, chefe!</p>';
}

// se existirem categorias, busque os itens:
if(isset($dados)){
    foreach ($dados as $k => $v) {


        $query = "SELECT * FROM sub_categorias where id = ".$v['id_categoria'];

        // execute a query
        $result = $sqli->query($query);

// verifica se houve algum erro na execução da query
        if ($sqli->error) {
            // se houve, mostra o erro na tela
            echo '<p class="error">Falha ao executar query, chefe!</p>' . $sqli->error;
    // se não houve erro algum e algum resultado foi encontrado
        } elseif ($result->num_rows) {
        // busca os itens em formato de array associativo
            $dados[$k]["ItensCardapio"] = $result->fetch_all(MYSQLI_ASSOC);//ItensCardapio é nome do array
} else { // se nenhum iten foi encontrado

    $dados[$k][] = [];
}
}
}
echo json_encode($dados,JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
?>

e agora o script do app android que irá pegar estas informações no nosso aplicativo

private void prepareLista(){
    lstGrupos = new ArrayList<>();
    lstItensGrupo = new HashMap<>();
    StringRequest stringRequest = new StringRequest(Request.Method.GET, URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try{
                        JSONArray pro = new JSONArray(response);

                        for(int i = 0; i<pro.length();i++){
                            JSONObject proObj = null;
                            proObj = pro.getJSONObject(i);
                            lstGrupos.add(proObj.getString("categoria"));
                            JSONArray itemArray = proObj.getJSONArray("ItensCardapio");//Aquele nome do Array
                            List<Produto> foods = new ArrayList<>();
                            for(int j = 0; j<itemArray.length();j++){
                                JSONObject proItem = itemArray.getJSONObject(j);

                                String subItem = proItem.getString("item");
                                Double valorItem = proItem.getDouble("valor");
                                foods.add(new Produto(subItem,valorItem));
                        }
                            lstItensGrupo.put(lstGrupos.get(i).toString(),foods);
                    }
                        //cria um adaptador (BaseExpandableListAdapter) com os dados acima
                        listAdapter = new ExpandableListViewAdapter(MainActivity.this, lstGrupos, lstItensGrupo);
                        //define o apadtador do ExpandableListView
                        expListView.setAdapter(listAdapter);
                    }catch (JSONException e){
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
                }
            });
    Volley.newRequestQueue(this).add(stringRequest);
}

Bom galera e é isso espero que sirva para outras pessoas que estejam doidas atras de um ExpandableListView com busca no Banco de Dados Mysql, agora bora lá dar continuidade ao projeto vlw

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this