Amigos, como posso resolver essa situação, tenho a classe configuração empresa, onde é informado dados da empresa como por exemplo cnpj, telefone e categoria, a categoria é pra identificar o tipo de produto que será vendido pela empresa, até aqui tudo ok. O problema é que quero filtra a empresa pro usuário, pois quando o usuário clicar em um Botão por exemplo Mercado, vai aparecer todos os mercados cadastrados na categoria. Se alguém puder me dar uma ajuda, pra ver onde estou errando, agradeço.
Classe Tela, ela que esta os Botões pra as opções Mercados e outras.
public class TelaActivity extends AppCompatActivity {
private Button mercad, lo;
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 opcaoEscolhida) {
//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(opcaoEscolhida)) empresasFiltradas.add(empresa);
}
}
public void iniciar() {
mercad = findViewById(R.id.Mercado);
lo = findViewById(R.id.lojaDeRoupa);
//escolhe= findViewById(R.id.);
// Espaço para eventos
mercad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// O parâmetro opção escolhida deverá ser indicado a partir do seu checkbox selecionado
filtrarEmpresas(); // Passe um parâmetro aqui
}
});
}
}
Classe configuração empresa
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();
}
}
}
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);
}
}