Portal Android - Comunidade de Desenvolvedores Android
http://www.portalandroid.org/comunidade/

Menu contextual
http://www.portalandroid.org/comunidade/viewtopic.php?f=2&t=31248
Página 1 de 1

Autor:  MHPA [ 12 Jun 2018, 21:20 ]
Assunto do Tópico:  Menu contextual

Boa noite.
Tenho uma aplicação para controle de extintores, o que quero é que quando selecionar um item ele deve pegar a posição dele para excluir ou alterar, devo usar o menu contextual simples, aquele de actionbar. Não estou conseguindo pegar a posição.

o método é o : onActionItemClicked

Segue o código:

public class PrincipalActivity extends AppCompatActivity{

    private ListView listViewExtintores;
    private ArrayAdapter<Extintores> listaAdapter;
    private ArrayList<String> array_ext;
    private ActionMode actionMode;
    private int posicaoSelecionada = -1;
    private View viewSelecionada;
    private static final int REQUEST_NOVO_EXTINTOR = 1;
    private static final int REQUEST_ALTERAR_EXTINTOR = 2;


    //MENU ACAO CONTEXTUAL SIMPLES INICIO
    private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            MenuInflater inflater = mode.getMenuInflater();
            inflater.inflate(R.menu.item_selecionado, menu);
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }



        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

            switch (item.getItemId()){
                case R.id.deleta_item:
                    //item.getItemId();
                    //excluirNome();
                    //Toast.makeText(PrincipalActivity.this, , Toast.LENGTH_LONG).show();
                    //listaAdapter.remove(listViewExtintores.getItemAtPosition(posicaoSelecionada));
                    mode.finish();
                    return true;
                case R.id.altera_item:
                    //excluir();
                    mode.finish();//Fecha o menu apos clicar no icone
                    return true;
                case R.id.servicos_item:
                    Intent intent_servicos = new Intent(getApplicationContext(), ServicosActivity.class);
                    startActivity(intent_servicos);
                    mode.finish();
                    return true;
                default:
                    return false;
            }
        }


        @Override
        public void onDestroyActionMode(ActionMode mode) {
            if(viewSelecionada != null){
                viewSelecionada.setBackgroundColor(Color.TRANSPARENT);
            }

            actionMode = null;
            viewSelecionada = null;

            listViewExtintores.setEnabled(true);
        }
    };

    //MENU ACAO CONTEXTUAL SIMPLES FINAL



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

        listViewExtintores = findViewById(R.id.listViewItens);

        listViewExtintores.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

        listViewExtintores.setOnItemLongClickListener(
                new AdapterView.OnItemLongClickListener() {

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

                        if (actionMode != null){
                            return false;
                        }

                        posicaoSelecionada = position;

                        view.setBackgroundColor(Color.LTGRAY);

                        viewSelecionada = view;

                        listViewExtintores.setEnabled(false);

                        actionMode = startSupportActionMode(mActionModeCallback);

                        return true;
                    }
                });

        popularLista();
    }

    private void popularLista() {

        List<Extintores> lista = null;

        try {
            DatabaseHelper conexao = DatabaseHelper.getInstance(this);

            lista = conexao.getExtintoresDAO()
                    .queryBuilder()
                    .orderBy("nome", false)
                    .query();

        } catch (SQLException e) {
            e.printStackTrace();
        }


        listaAdapter = new ArrayAdapter<Extintores>(PrincipalActivity.this,
                android.R.layout.simple_list_item_1,
                lista);

        listViewExtintores.setAdapter(listaAdapter);
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_principal, menu);
        return true;
    }

    /*private void excluirExtintor(){
        String mensagem = getString(R.string.deseja_realmente_apagar)
                + "\n";

        DialogInterface.OnClickListener listener =
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        switch(which){
                            case DialogInterface.BUTTON_POSITIVE:

                                    DatabaseHelper conexao =
                                            DatabaseHelper.getInstance(PrincipalActivity.this);

                                    //conexao.getExtintoresDAO().delete(extintores);

                                    array_ext.remove(posicaoSelecionada);
                                    listaAdapter.notifyDataSetChanged();



                                break;
                            case DialogInterface.BUTTON_NEGATIVE:

                                break;
                        }
                    }
                };

        UtilsGUI.confirmaAcao(PrincipalActivity.this, mensagem, listener);
    }*/


    private void excluirNome(){
        array_ext.remove(posicaoSelecionada);
        listaAdapter.notifyDataSetChanged();
    }



    @Override
        protected void onResume() {
            //Ao voltar a tela principal apos o cadastro chama o metodo popularLista para carregar os registros adicionados
            super.onResume();
            popularLista();
        }



        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();

            switch (item.getItemId()) {
                case R.id.sobre_app:
                    Intent intent_sobre = new Intent(getApplicationContext(), AboutActivity.class);
                    startActivity(intent_sobre);
                    return true;

                case R.id.adicionar:
                    Intent intent_adicionar = new Intent(getApplicationContext(), CadastroActivity.class);
                    startActivity(intent_adicionar);
                    return true;

                default:
                    return super.onOptionsItemSelected(item);
            }

        }

}

Página 1 de 1 Todos os Horários estão como UTC - 2 horas [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/