Ir para conteúdo
Fórum Script Brasil
  • 0

RESOLVIDO - Help-me em Array Json aplicativo


Heltinhu

Pergunta

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

 

Editado por Heltinhu
melhoramento da pergunta
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...