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
}
});
}
}