3
respostas

uma duvida relacionada ao clicar num item da lista

Agradeceria muito se alguem me ajuda-se. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hugobedford.central44/com.example.hugobedford.central44.ListofUsersActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setOnItemClickListener(android.widget.AdapterView$OnItemClickListener)' on a null object reference

se eu remover o setonitemclicklistener do listaDeUsuarios funciona tudo normalmente. Uma coisa que percebi e q o private listaDeUsuarios la em cima diz que nao esta sendo utilizado. So que nao da nenhum problema ali embaixo. tudo sem reclamacao.

3 respostas
public class ListofUsersActivity extends AppCompatActivity {

    private ListView listaDeUsuarios;
    private int formbotao;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listof_users);
        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.listusers);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
        carregaListaFuncionario();
        Button botaonovo = (Button) findViewById(R.id.Cadastrarnovo);
        botaonovo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(formbotao== 0) {
                    Intent intent = new Intent(ListofUsersActivity.this, FormularioFuncionario.class);
                    startActivity(intent);
                }else if(formbotao== 1) {
                    Intent intent = new Intent(ListofUsersActivity.this, FormularioMotorista.class);
                    startActivity(intent);
                }else
                if(formbotao== 2) {
                    Intent intent = new Intent(ListofUsersActivity.this, FormularioPassageiro.class);
                    startActivity(intent);
                }
            }
        });

        listaDeUsuarios.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if(formbotao ==0) {
                    Funcionario funcionario = (Funcionario) listaDeUsuarios.getItemAtPosition(position);
                    Intent intentVaiProFormulario = new Intent(ListofUsersActivity.this, FormularioFuncionario.class);
                    intentVaiProFormulario.putExtra("funcionario", funcionario);
                    startActivity(intentVaiProFormulario);
                }else if(formbotao ==1) {
                    Motorista motorista = (Motorista) listaDeUsuarios.getItemAtPosition(position);
                    Intent intentVaiProFormulario = new Intent(ListofUsersActivity.this, FormularioMotorista.class);
                    intentVaiProFormulario.putExtra("motorista", motorista);
                    startActivity(intentVaiProFormulario);
                }else if(formbotao ==2) {
                    Passageiro passageiro = (Passageiro) listaDeUsuarios.getItemAtPosition(position);
                    Intent intentVaiProFormulario = new Intent(ListofUsersActivity.this, FormularioPassageiro.class);
                    intentVaiProFormulario.putExtra("passageiro", passageiro);
                    startActivity(intentVaiProFormulario);
                }

            }
        });
        registerForContextMenu(listaDeUsuarios);
    }

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_listfuncionarios:
                    carregaListaFuncionario();
                    return true;
                case R.id.navigation_listmotoristas:
                    carregaListaMotorista();
                    return true;
                case R.id.navigation_listpassageiros:
                    carregaListaPassageiro();
                    return true;
            }
            return false;
        }

    };
    private void carregaListaFuncionario()  {
        FuncionarioDAO dao = new FuncionarioDAO(this);
        List<Funcionario> funcionarios = dao.buscaFuncionarios(); dao.close();

        ListView listaFuncionarios = (ListView)  findViewById(R.id.listviewusers);
        ArrayAdapter<Funcionario> adapter = new ArrayAdapter<Funcionario>(this,  android.R.layout.simple_list_item_1, funcionarios);
        listaFuncionarios.setAdapter(adapter);
        setTitle("Lista de Funcionarios");
        formbotao = 0;
    }

    private void carregaListaMotorista()  {
        MotoristaDAO dao = new MotoristaDAO(this);
        List<Motorista> motoristas = dao.buscaMotoristas(); dao.close();

        ListView listaMotoristas = (ListView)  findViewById(R.id.listviewusers);
        ArrayAdapter<Motorista> adapter = new ArrayAdapter<Motorista>(this,  android.R.layout.simple_list_item_1, motoristas);
        listaMotoristas.setAdapter(adapter);
        setTitle("Lista de Motoristas");
        formbotao = 1;
    }

continuacao

    private void carregaListaPassageiro()  {
        PassageiroDAO dao = new PassageiroDAO(this);
        List<Passageiro> passageiros = dao.buscaPassageiros(); dao.close();

        ListView listaPassageiros = (ListView)  findViewById(R.id.listviewusers);
        ArrayAdapter<Passageiro> adapter = new ArrayAdapter<Passageiro>(this,  android.R.layout.simple_list_item_1, passageiros);
        listaPassageiros.setAdapter(adapter);
        setTitle("Lista de Passageiros");
        formbotao = 2;
    }
    @Override
    protected void onResume() {
        super.onResume();
        if(formbotao ==0)
            carregaListaFuncionario();
        else if(formbotao==1)
            carregaListaMotorista();
        else if(formbotao ==2)
            carregaListaPassageiro();
    }

}

Hugo, tudo bem ?

Cara o problema é que você não está passando referencia para o seu atributo da lista.

Você precisa alterar seu método carregaListaPassageiro :

    private void carregaListaPassageiro()  {
        PassageiroDAO dao = new PassageiroDAO(this);
        List<Passageiro> passageiros = dao.buscaPassageiros(); dao.close();

        ListView listaPassageiros = (ListView)  findViewById(R.id.listviewusers);
        ArrayAdapter<Passageiro> adapter = new ArrayAdapter<Passageiro>(this,  android.R.layout.simple_list_item_1, passageiros);
        listaPassageiros.setAdapter(adapter);
        setTitle("Lista de Passageiros");
        formbotao = 2;
    }

Para ficar assim :


    private void carregaListaPassageiro()  {
        PassageiroDAO dao = new PassageiroDAO(this);
        List<Passageiro> passageiros = dao.buscaPassageiros(); dao.close();

        listaPassageiros = (ListView)  findViewById(R.id.listviewusers);
        ArrayAdapter<Passageiro> adapter = new ArrayAdapter<Passageiro>(this,  android.R.layout.simple_list_item_1, passageiros);
        listaPassageiros.setAdapter(adapter);
        setTitle("Lista de Passageiros");
        formbotao = 2;
    }