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

Mostrar um texto para cada item de uma ListView no Toast

Boa noite á todos!

Estou desenvolvendo um app para pizzaria e surgiu um problema, creio que simples de ser resolvido, porém como sou iniciante na área, ando apanhando bastante. É o seguinte, em uma das minhas activities, há uma ListView de pizzas de vários sabores. Minha intenção é fazer com que ao usuário clicar numa determinada pizza, um Toast mostre os ingredientes contidos nela. É aí que o erro ocorre:

public class ListaPizzasSalgadasActivity extends Activity {
    private ListView listaPizzasSalgadas;
    private Pizza selecionada;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lista_pizzas_salgadas);

        Pizza pizzaSalgada1= new Pizza();
        pizzaSalgada1.setId(1);
        pizzaSalgada1.setNomePizza("A moda");
        pizzaSalgada1.setPreco(10.90);
        pizzaSalgada1.setIngredientes("Ingredientes escolhidos á moda da casa");

        Pizza pizzaSalgada2= new Pizza();
        pizzaSalgada2.setId(2);
        pizzaSalgada2.setNomePizza("Atum");
        pizzaSalgada2.setPreco(11.90);
        pizzaSalgada2.setIngredientes("Atum, Cebola, Alho, Azeitona e Molho de Tomate");

        String[] pizzasSalgadas = {pizzaSalgada1.getNomePizza(), pizzaSalgada2.getNomePizza(), pizzaSalgada3.getNomePizza(), pizzaSalgada4.getNomePizza(), pizzaSalgada5.getNomePizza(), 
                pizzaSalgada6.getNomePizza(), pizzaSalgada6.getNomePizza(), pizzaSalgada7.getNomePizza(), pizzaSalgada8.getNomePizza(), pizzaSalgada9.getNomePizza(), pizzaSalgada10.getNomePizza()};
        int layout = android.R.layout.simple_list_item_1;
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, layout, pizzasSalgadas);

        listaPizzasSalgadas = (ListView) findViewById(R.id.lista_pizzas_salgadas);
        listaPizzasSalgadas.setAdapter(adapter);


listaPizzasSalgadas.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {
                selecionada = (Pizza) adapter.getItemAtPosition(posicao);
                Toast.makeText(ListaPizzasSalgadasActivity.this, selecionada.getIngredientes(), Toast.LENGTH_LONG).show();

            }

        });
    }
}

Obs: Coloquei apenas duas pizzas para não extender muito o tópico.

O eclipse compila sem erros, a aplicação roda no emulador normalmente, porém na tela que lista as pizzas, ao clicar em um determinado sabor, o app fecha e no logCat trás um erro de "java.lang.ClassCastException: java.lang.String". Pelo conhecimento que tenho, entendi que é um erro de Casting porém não consegui resolvê-lo.

Eu consegui apenas com que uma mensagem padrão fosse mostrada para todas as pizzas porém não é nada convencional á OO fazer vários "if-else" e colocar uma mensagem em cada. Segue:

listaPizzasSalgadas.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int posicao, long id) {

                Toast.makeText(ListaPizzasSalgadasActivity.this, "Ingredientes da pizza", Toast.LENGTH_LONG).show();

            }

        });

Poderiam me ajudar?

Obrigado!

  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!

1 resposta

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