Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Caixa de dialogo

Estou querendo colocar uma caixa de dialogos na opção qdo deletar. Não estou conseguindo

segue codigo:

package br.com.mfgs.cadastrodeclientes;

import java.util.List;

import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import br.com.mfgs.cadastrodeclientes.dao.ClienteDAO;
import br.com.mfgs.cadastrodeclientes.modelo.Cliente;


public class ListaClientesActivity extends Activity{

    private ListView lista;
    Cliente clienteSelecionado;



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

        lista = (ListView) findViewById(R.id.lista);
        registerForContextMenu(lista);    

        //Clique normal
        lista.setOnItemClickListener(new OnItemClickListener() {

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

                Cliente alterarCliente = (Cliente) adapter.getItemAtPosition(posicao);

                Intent irParaFormulario = new Intent(ListaClientesActivity.this, FormularioActivity.class);
                irParaFormulario.putExtra("clienteSelecionado", alterarCliente);

                startActivity(irParaFormulario);

                Toast.makeText(ListaClientesActivity.this, "A posição é: " + posicao, Toast.LENGTH_SHORT).show();                
            }
        });

        //Clique Longo
        lista.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

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

                clienteSelecionado = (Cliente) adapter.getItemAtPosition(posicao);

                return false;
            }
        });

    }

    @Override
    protected void onResume() {

        carregaLista();
        super.onResume();

        ClienteDAO dao = new ClienteDAO(this);
        List<Cliente> clientes = dao.getLista();

        ArrayAdapter<Cliente> adapter = 
            new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, clientes); 
        lista.setAdapter(adapter);

    }

        private void carregaLista() {
            ClienteDAO dao = new ClienteDAO(this);
            List<Cliente> clientes = dao.getLista();

            ArrayAdapter<Cliente> adapter = 
                new ArrayAdapter<Cliente>(this, android.R.layout.simple_list_item_1, clientes); 
            lista.setAdapter(adapter);

        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.menu_listaclientes, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.novo:
            Intent irParaFormulario = new Intent(ListaClientesActivity.this, FormularioActivity.class); 
            startActivity(irParaFormulario);
            break;

        default:
            break;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {

        menu.add("Ligar");
        menu.add("Enviar SMS");
        menu.add("Achar no Mapa");
        menu.add("Navegar no site");
        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                ClienteDAO dao = new ClienteDAO(ListaClientesActivity.this);
                dao.deletar(clienteSelecionado);

                /*Toast.makeText(ListaClientesActivity.this, 
                        "Clicou no Botão", Toast.LENGTH_LONG).show();*/

                /*Builder msg = new Builder(ListaClientesActivity.this);
                msg.setMessage("Deseja apagar este clientes?");
                msg.setNegativeButton("Não", null);
                msg.setPositiveButton("Sim", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int which) {
                        if (clienteSelecionado != null){
                            Toast.makeText(getBaseContext(),
                                    "Sucesso ao apagar o cliente.", Toast.LENGTH_SHORT)
                                    .show();
                            finish();
                        } else {
                            Toast.makeText(getBaseContext(), "Erro ao apagar o cliente.",
                                    Toast.LENGTH_SHORT).show();
                        }*/

                dao.close();
                carregaLista();

                return false;
            }
        });

        menu.add("Enviar E-Mail");

        super.onCreateContextMenu(menu, v, menuInfo);
    }

}
1 resposta
solução!

Oi Cristiano, tudo bem?

Acho que no seu caso, só faltou pedir pra mostrar o AlertDialog chamando o método show(). Vou dar um exemplo de como poderia fazer:

public class ListaAlunosActivity extends AppCompatActivity {

    // code, code, code...

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        // code, code, code...

        MenuItem deletar = menu.add("Deletar");
        deletar.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                AlertDialog.Builder msg = new AlertDialog.Builder(ListaAlunosActivity.this);
                msg.setMessage("Deseja realmente excluir?");
                msg.setNegativeButton("Nao", null);
                msg.setPositiveButton("Sim", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        AlunoDAO dao = new AlunoDAO(ListaClientesActivity.this);
                        dao.deletar(alunoSelecionado);
                        dao.close();

                        carregaLista();
                    }
                });

                msg.show(); // exibe a caixa de confirmação

                return false;
            }
        });
    }

    private void carregaLista() {
        AlunoDAO dao = new AlunoDAO(this);
        List<Aluno> alunos = dao.getLista();
        dao.close();

        AlunoAdapter adapter = new AlunoAdapter(alunos, this);
        lista.setAdapter(adapter);
    }
}

Faz sentido?

Abraço.