Como percorer um array em android studio?

7 respostas
programação
H

como posso percorrer um array, e ver se tem algum item no array?

public class TelaActivity extends AppCompatActivity {
    private Button mercad;
    private Button lo;
    private TextView recebe;

    private List<Empresa> empresasTotais = new ArrayList<>();
    private List<Empresa> empresasFiltradas = new ArrayList<>();

    private Button escolhe;

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

        // Inicializador
        iniciar();

    }

    public void filtrarEmpresas(String opccaoEscolhida) {
        //Limpar a lista caso já hajam empresas na lista de empresas filtradas
        empresasFiltradas.clear();
        //Lista com as empresas totais já com as empresas recebidas
        for (Empresa empresa : empresasTotais) {

            //Se a empresa conter a opcao escolhida vamos adicionar
            //a impresa a nova lista de filtros
            if (empresa.getCategoria().contains(opccaoEscolhida)) empresasFiltradas.add(empresa);
        }
    }

    public void iniciar() {
        mercad = findViewById(R.id.Mercado);
        lo = findViewById(R.id.lojaDeRoupa);
         TextView recebe = findViewById(R.id.Cate);


        // Espaço para eventos
        mercad.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                startActivity(new Intent(TelaActivity.this, HomeActivity.class));


                // O parâmetro opção escolhida deverá ser indicado a partir do seu checkbox selecionado
                filtrarEmpresas(); // Passe um parâmetro aqui
            }
        });
    }
}

7 Respostas

W

Boa noite, Henrique.

LEIA OS COMENTÁRIOS

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;

public class TelaActivity extends AppCompatActivity{

    // DECLARE AS VARIÁVEIS/ATRIBUTOS AQUI
    TextView recebe;
    Button mercad, lo, escolhe;
    ArrayList<Empresa> empresasTotais;
    ArrayList<Empresa> empresasFiltradas = new ArrayList<>();

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

        // UMA BOA PRÁTICA É DEIXAR OS findViewByIds AQUI DENTRO DO onCreate
        mercad = findViewById(R.id.Mercado);
        lo = findViewById(R.id.lojaDeRoupa);
        recebe = findViewById(R.id.Cate);

        // Inicializador
        iniciar();
    }

    public void filtrarEmpresas(String opccaoEscolhida){
        //Limpar a lista caso já hajam empresas na lista de empresas filtradas
        empresasFiltradas.clear();

        // INSTANCIE O ArrayList DENTRO DO MÉTODO EM QUE VC VAI USÁ-LO (filtrarEmpresas)
        empresasTotais = new ArrayList<>();

        //Lista com as empresas totais já com as empresas recebidas
        for(int i = 0; i < empresasTotais.size(); i++){
        
          // A VARIÁVEL empresa RECEBE A empresa DO ArrayList empresasTotais SEGUNDO SEU ÍNDICE i,
         // i COMEÇA COM O VALOR 0 E VAI ATÉ A ÚLTIMA POSIÇÃO,
         // POIS i ESTÁ SENDO INCREMENTADO DESSA FORMA:  i = i + 1.
         // A CASA GIRO DO for UMA empresa É ATRIBUÍDA À VARIÁVEL empresa
         // E ESTA É INSERIDA NO ArrayList empresasFiltradas NA LINHA empresasFiltradas.add(empresa)
            empresa = empresasTotais.get(i);

            //Se a empresa conter a opcao escolhida vamos adicionar
            //a impresa a nova lista de filtros
            if(empresa.getCategoria().contains(opccaoEscolhida)) empresasFiltradas.add(empresa);
        }

        // FIZ UM Toast SÓ PRA EXIBIR A QUANTIDADE DE empresas QUE HÁ NO SEU ArrayList. Vc o obtém ao usar o size() - empresasTotais.size()
        Toast.makeText(this, "TOTAL DE EMPRESAS: " + empresasTotais.size() + "", Toast.LENGTH_SHORT).show();// CONCATENE empresasTotais.size() + "", POIS empresasTotais.size() É UM int
    }

    public void iniciar(){
        // Espaço para eventos
        mercad.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                startActivity(new Intent(TelaActivity.this, HomeActivity.class));
                // O parâmetro opção escolhida deverá ser indicado a partir do seu checkbox selecionado
                filtrarEmpresas(); // Passe um parâmetro aqui
            }
        });
    }
}

Vc não usou a variável “escolhe” declarada lá nos atributos, se não for usá-la, descarta ela de lá.

Espero ter ajudado.

H

show, ajudou sim, fiz aqui e deu certinho, agora a duvida é, se puder e ajudar é claro, logo apos o usuario se cadastrar, ou fiz o login, o mesmo é direcionado pra uma tela, onde tem dois botões, o botão mercado, e loja de roupas, vamos dizer que o usuário aperte o botão mercado, o app lista todos as empresas da categoria mercado, só que não sei como fazer isso, se puder me dar uma força.

W

Usa um ListView pra listar todas as empresas. Vc está pegando as empresas do banco de dados ou está só testando inserindo Strings?

H

pego as empresas do banco, uso o firebase, eu consigo listar todas as empresas sabe, mas tipo filtrar elas não sei como fazer.

W

Eu trabalhei com SQLite, o exemplo que posso te dar seria com a implementação dele, ajuda?
Qual seria esse seu fifltro?

H

ajuda sim, o filtro seria por categoria, da uma olhada.

Configuração empresa, onde é feita a opção por categoria

public class ConfiguracaoEmpresaActivity extends AppCompatActivity {
    private EditText editEmpresaNome, tefe,cnpj,
            editEmpresaTempo, editEmpresaTaxa;
    private ImageView imagePerfilEmpresa;
  private TextView categoria;
    private static final int SELECAO_GALERIA = 200;
    private StorageReference storageReference;
    private DatabaseReference firebaseRef;
    private String idUsuarioLogado;
    private String urlImagemSelecionada ;
    private RadioButton mercado,loja;
    private RadioGroup opcaoCate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configuracao);
//Configurações iniciais
        inicializarComponentes();
        storageReference = ConfiruFirebase.getReferenciaStorage();
        firebaseRef = ConfiruFirebase.getFirebase();
        idUsuarioLogado = UsuarioFirebase.getIdUsuario();

        //Configurações Toolbar
        Toolbar toolbar = findViewById(R.id.toolbarNova);
        toolbar.setTitle("Perfil");
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        imagePerfilEmpresa.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI
                );
                if( i.resolveActivity(getPackageManager()) != null ){
                    startActivityForResult(i, SELECAO_GALERIA);
                }
            }
        });

        /*Recuperar dados da empresa*/
        recuperarDadosEmpresa();
  EscoleCategoria();

    }

    private void recuperarDadosEmpresa(){

        DatabaseReference empresaRef = firebaseRef
                .child("empresas")
                .child( idUsuarioLogado );

        empresaRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if( dataSnapshot.getValue() != null ){
                    Empresa empresa = dataSnapshot.getValue(Empresa.class);
                    editEmpresaNome.setText(empresa.getNome());
                    categoria.setText(empresa.getCategoria());
                    editEmpresaTaxa.setText(empresa.getPrecoEntrega().toString());
                    editEmpresaTempo.setText(empresa.getTempo());
                     cnpj.setText(empresa.getCnpj());
                     tefe.setText(empresa.getTefoneEmpresa());
                    urlImagemSelecionada = empresa.getUrlImagem();
                    if( urlImagemSelecionada != "" ){
                        Picasso.get()
                                .load(urlImagemSelecionada)
                                .into(imagePerfilEmpresa);
                    }

                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }
    public  void EscoleCategoria(){

     opcaoCate.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
         @Override
         public void onCheckedChanged(RadioGroup group, int checkedId) {
             if(checkedId== R.id.mercado){
                 categoria.setText("Mercado");
             }else if(checkedId==R.id.lojaDeRoupa){
                 categoria.setText("Loja de Roupas");

             }
         }
     });



    }
    public void validarDadosEmpresa(View view){

        //Valida se os campos foram preenchidos
        String nome = editEmpresaNome.getText().toString();
        String taxa = editEmpresaTaxa.getText().toString();
        String Categoria = categoria.getText().toString();
        String tempo = editEmpresaTempo.getText().toString();
        String cnpf = cnpj.getText().toString();
        String tele= tefe.getText().toString();

        if( !nome.isEmpty()){
            if( !taxa.isEmpty()){

                    if( !cnpf.isEmpty()){

                        Empresa empresa = new Empresa();
                        empresa.setIdUsuario( idUsuarioLogado );
                        empresa.setNome( nome );
                        empresa.setPrecoEntrega( Double.parseDouble(taxa) );
                        empresa.setCategoria(Categoria);
                        empresa.setTempo( tempo );
                        empresa.setCnpj(cnpf);
                        empresa.setTefoneEmpresa(tele);
                        empresa.setUrlImagem( urlImagemSelecionada );

                        empresa.salvar();
                        finish();

                    }else{
                        exibirMensagem("Digite a Taxa de Entrega");
                    }

            }else{
                exibirMensagem("Digite Cnpj");
            }
        }else{
            exibirMensagem("Digite um nome para a empresa");
        }
        EscoleCategoria();
    }

    private void exibirMensagem(String texto){
        Toast.makeText(this, texto, Toast.LENGTH_SHORT)
                .show();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if( resultCode == RESULT_OK){
            Bitmap imagem = null;

            try {

                switch (requestCode) {
                    case SELECAO_GALERIA:
                        Uri localImagem = data.getData();
                        imagem = MediaStore.Images
                                .Media
                                .getBitmap(
                                        getContentResolver(),
                                        localImagem
                                );
                        break;
                }

                if( imagem != null){

                    imagePerfilEmpresa.setImageBitmap( imagem );

                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    imagem.compress(Bitmap.CompressFormat.JPEG, 70, baos);
                    byte[] dadosImagem = baos.toByteArray();

                    StorageReference imagemRef = storageReference
                            .child("imagens")
                            .child("empresas")
                            .child(idUsuarioLogado + "jpeg");

                    UploadTask uploadTask = imagemRef.putBytes( dadosImagem );
                    uploadTask.addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(ConfiguracaoEmpresaActivity.this,
                                    "Erro ao fazer upload da imagem",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                            urlImagemSelecionada = taskSnapshot.getDownloadUrl().toString();
                            Toast.makeText(ConfiguracaoEmpresaActivity.this,
                                    "Sucesso ao fazer upload da imagem",
                                    Toast.LENGTH_SHORT).show();

                        }
                    });

                }

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

        }

    }
// inicia os componentes

    private void inicializarComponentes(){
        editEmpresaNome = findViewById(R.id.editEmpresaNome);
        mercado = findViewById(R.id.mercado);
        loja= findViewById(R.id.lojaDeRoupa);

        editEmpresaTaxa = findViewById(R.id.editEmpresaTaxa);
        editEmpresaTempo = findViewById(R.id.editEmpresaTempo);
        imagePerfilEmpresa = findViewById(R.id.FotoEmpresa);
        opcaoCate = findViewById(R.id.opcaoCategoria);
        categoria = findViewById(R.id.Cate);
        tefe= findViewById(R.id.tefenoEmpresa);
        cnpj= findViewById(R.id.Cnpf);
    }

tela que faz a opção, onde terá os botões no laytou

public class TelaActivity extends AppCompatActivity{

// DECLARE AS VARIÁVEIS/ATRIBUTOS AQUI
TextView recebe;
Button mercad, lo, escolhe;
ArrayList<Empresa> empresasTotais;
ArrayList<Empresa> empresasFiltradas = new ArrayList<>();

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

    // UMA BOA PRÁTICA É DEIXAR OS findViewByIds AQUI DENTRO DO onCreate
    mercad = findViewById(R.id.Mercado);
    lo = findViewById(R.id.lojaDeRoupa);
    recebe = findViewById(R.id.Cate);

    // Inicializador
    iniciar();
}

public void filtrarEmpresas(String opccaoEscolhida){
    //Limpar a lista caso já hajam empresas na lista de empresas filtradas
    empresasFiltradas.clear();

    // INSTANCIE O ArrayList DENTRO DO MÉTODO EM QUE VC VAI USÁ-LO (filtrarEmpresas)
    empresasTotais = new ArrayList<>();

    //Lista com as empresas totais já com as empresas recebidas
    for(int i = 0; i < empresasTotais.size(); i++){

        // A VARIÁVEL empresa RECEBE A empresa DO ArrayList empresasTotais SEGUNDO SEU ÍNDICE i,
        // i COMEÇA COM O VALOR 0 E VAI ATÉ A ÚLTIMA POSIÇÃO,
        // POIS i ESTÁ SENDO INCREMENTADO DESSA FORMA:  i = i + 1.
        // A CASA GIRO DO for UMA empresa É ATRIBUÍDA À VARIÁVEL empresa
        // E ESTA É INSERIDA NO ArrayList empresasFiltradas NA LINHA empresasFiltradas.add(empresa)
        Empresa empresa = empresasTotais.get(i);

        //Se a empresa conter a opcao escolhida vamos adicionar
        //a impresa a nova lista de filtros
        if(empresa.getCategoria().contains(opccaoEscolhida)) empresasFiltradas.add(empresa);
    }

    // FIZ UM Toast SÓ PRA EXIBIR A QUANTIDADE DE empresas QUE HÁ NO SEU ArrayList. Vc o obtém ao usar o size() - empresasTotais.size()
    Toast.makeText(this, "TOTAL DE EMPRESAS: " + empresasTotais.size() + "", Toast.LENGTH_SHORT).show();// CONCATENE empresasTotais.size() + "", POIS empresasTotais.size() É UM int
}

public void iniciar(){
    // Espaço para eventos
    mercad.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            //startActivity(new Intent(TelaActivity.this, HomeActivity.class));
            // O parâmetro opção escolhida deverá ser indicado a partir do seu checkbox selecionado
            filtrarEmpresas(); // Passe um parâmetro aqui
        }
    });
}

}

W

Essa lista é de alunos que estão cadastrados no Banco de Dados. Quanto ao filtro, vc consulta no seu banco de dados uma empresa e verifica sua categoria. SE (if) a empresa é de x categoria, vc insere ela num ArrayListXCategoria como o do aluno. SE (if) a empresa é de y categoria, vc insere ela num ArrayListYCategoria e assim vai. Depois de os ArrayLists estarem preenchidos vc pode manipulá-los pra oq vc quiser fazer com as empresas de determinadas categorias. Abaixo segue minha listview de alunos. Espero que ajude.

package estudos.listview;

import android.database.Cursor;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;


public class ListarAlunos extends AppCompatActivity{

    // ATRIBUTOS
    BancoDeDados banco;
    Aluno aluno;
    ArrayList<Aluno> arrayList;
    ArrayAdapterCustAluno arrayAdapterCustAluno;
    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listar_alunos);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        // INSTÂNCIAS E REFERÊNCIAS
        banco = new BancoDeDados(this);            
        listView = findViewById(R.id.lista_de_alunos);

        // CHAMADA DO MÉTODO listarAlunos() QUE LISTA TODOS OS Alunos QUE ESTÃO CADASTRADOS NO BANCO DE DADOS
        listarAlunos();
    }

    public void listarAlunos(){
        // RESULTADO DA CONSULTA POR TODOS OS VALORES QUE HÁ NESTA TABELA
        Cursor cursor = banco.listarAlunosBanco();

        // getCount() RETORNA A QUANTIDADE DE VALORES QUE HÁ NA VARIÁVEL resultado. SE resulado FOR IGUAL A 0, NÃO HÁ VALORES NA LISTA
        if(cursor.getCount() == 0){
            Toast.makeText(this, R.string.lista_vazia, Toast.LENGTH_SHORT).show();
            finish();
        }
        else{
            // Instância do ArrayList
            arrayList = new ArrayList<>();
            // .moveToNext() MOVE O Cursor PARA O PRÓXIMO VALOR (ATÉ O ÚLTIMO)
            while(cursor.moveToNext()){
                String idAluno = cursor.getString(cursor.getColumnIndex("ID_ALUNO"));
                String fkDadosPessoais = cursor.getString(cursor.getColumnIndex("FK_DADOS_PESSOAIS_ALUNO"));
                String fkEndereco = cursor.getString(cursor.getColumnIndex("FK_END_ALUNO"));
                String fkTurma = cursor.getString(cursor.getColumnIndex("FK_TURMA"));

                aluno = new Aluno(idAluno, fkDadosPessoais, fkEndereco, fkTurma);// INSTÂNCIA DO Aluno ENCONTRADO
                arrayList.add(aluno);// INSERÇÃO DO Aluno NO arrayList QUE É UMA LISTA DE Alunos
                arrayAdapterCustAluno = new ArrayAdapterCustAluno(this, arrayList);// INSTÂNCIA DO ARRAYADAPTER CUSTOMIZADO
                listView.setAdapter(arrayAdapterCustAluno);// O ADAPTER DO ListView É SETADO PASSANDO O ADAPTER CUSTOMIZADO
            }
        }
    }
}
Criado 15 de agosto de 2020
Ultima resposta 16 de ago. de 2020
Respostas 7
Participantes 2