0

Problem:ProgressDialog in einem Adapter FireStore

Ich habe einen Bildschirm, wo es die Zeitpläne eines bestimmten Benutzers zeigt.

Aber zur gleichen Zeit muss ich überprüfen, ob einer der Zeitpläne bereits besetzt ist, und Ihren Hintergrund eine dunklere Farbe.

Drucken 1: RecyclerView-Bildschirm mit Zeitplänen.

Drucken 2: Es ist der gleiche Bildschirm, aber nach dem Überprüfen der verfügbaren Zeitpläne.

Hinweis: Wenn wir auf dem Wi-Fi-Netzwerk sind, ist das Laden schnell, aber wenn es ein mobiles Internet ist, ist es sehr langsam.

Print 1Print 2

Ich brauche einen Weg, einen ProgressDialog in meinem Adapter, genau in dem Moment, in dem die Überprüfung der Zeitpläne erfolgt hinzuzufügen.

hier:

/*Checar Horario disponivel*/ 
      final FirebaseFirestore mDB = FirebaseFirestore.getInstance(); 
      CollectionReference mDBHorarios = mDB.collection("Empresas").document(empresa).collection("Agendamentos"); 

      mDBHorarios.whereEqualTo("profissional_id", ref.getId_Prof()).whereEqualTo("agenda_hora", ref.getHora()) 
        .get() 
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
         @Override 
         public void onComplete(@NonNull Task<QuerySnapshot> task) { 
          if (task.isSuccessful()) { 
           for (DocumentSnapshot document : task.getResult()) { 

            Agendamentos doc = document.toObject(Agendamentos.class); 

            String horaAgenda = doc.getAgenda_hora(); 
            /*Cor do fundo*/ 
            if (horaAgenda.equals(ref.getHora())){ 

             fundoHora.setBackgroundColor(Color.parseColor("#E0E0E0")); 
             statusHoraAgenda = true; 


            } 

           } 
          } else { 

          } 
         } 
        }); 

Hinweis: Es kann sein, dass dies nicht eine gute Möglichkeit ist. Ich nehme an, schlägt vor, wenn es eine bessere Möglichkeit gibt, diese Abfrage in einem RecyclerView zu tun.

-Code Voll - Adapter:

public class HorariosProfissionalAdapter extends FirestoreAdapter<HorariosProfissionalAdapter.ViewHolder>{ 

    public interface OnHorariosProfissionaisListner { 

     void onHorarioProfissionaisSelected(DocumentSnapshot horariosProfissional); 

    } 

    private OnHorariosProfissionaisListner mListner; 

    public HorariosProfissionalAdapter(Query query, OnHorariosProfissionaisListner listner){ 

     super(query); 
     mListner = listner; 

    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     LayoutInflater inflater = LayoutInflater.from(parent.getContext()); 
     return new ViewHolder(inflater.inflate(R.layout.card_horarios_profissional, parent, false)); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     holder.bind(getSnapshot(position), mListner); 
    } 

    static class ViewHolder extends RecyclerView.ViewHolder { 

     private Boolean statusHoraAgenda = false; 

     @BindView(R.id.tvHoraProf) 
     TextView hora; 

     @BindView(R.id.fundoHorario) 
     LinearLayout fundoHora; 





     public ViewHolder(View itemView) { 
      super(itemView); 
      ButterKnife.bind(this, itemView); 
     } 


     public void bind(final DocumentSnapshot snapshot, 
         final OnHorariosProfissionaisListner listener) { 

      final HorariosProfissionais ref = snapshot.toObject(HorariosProfissionais.class); 
      String empresa = ref.getId_Emp(); 


      /*Checar Horario disponivel*/ 
      final FirebaseFirestore mDB = FirebaseFirestore.getInstance(); 
      CollectionReference mDBHorarios = mDB.collection("Empresas").document(empresa).collection("Agendamentos"); 

      mDBHorarios.whereEqualTo("profissional_id", ref.getId_Prof()).whereEqualTo("agenda_hora", ref.getHora()) 
        .get() 
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
         @Override 
         public void onComplete(@NonNull Task<QuerySnapshot> task) { 
          if (task.isSuccessful()) { 
           for (DocumentSnapshot document : task.getResult()) { 

            Agendamentos doc = document.toObject(Agendamentos.class); 

            String horaAgenda = doc.getAgenda_hora(); 
            /*Cor do fundo*/ 
            if (horaAgenda.equals(ref.getHora())){ 

             fundoHora.setBackgroundColor(Color.parseColor("#E0E0E0")); 
             statusHoraAgenda = true; 


            } 

           } 
          } else { 

          } 
         } 
        }); 



      hora.setText(ref.getHora()); 


      // Click listener 
      itemView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        if (listener != null && !statusHoraAgenda) { 
         listener.onHorarioProfissionaisSelected(snapshot); 
        } 
       } 
      }); 
     } 

    } 
} 

-Code Voll - Aktivität:

public class Agenda_profissionais extends AppCompatActivity implements HorariosProfissionalAdapter.OnHorariosProfissionaisListner { 

    private String mId_Empresa = null; 
    private String mId_Profissional = null; 
    private String mNome_Profissional = null; 

    private RecyclerView mCardHorarios; 
    private HorariosProfissionalAdapter mAdapter; 
    private FirebaseFirestore mFirestore; 
    private Query mQuery; 

    private ProgressDialog mProgress; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_agenda_profissionais); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setTitle("Horario"); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 



     /* CONFIGURAÇÃO TOOLBAR*/ 
     Bundle extra = getIntent().getExtras(); 
     if (extra != null){ 

      mId_Empresa = extra.getString("id_empresa"); 
      mId_Profissional = extra.getString("id_profissional"); 
      mNome_Profissional = extra.getString("nome_profissional"); 

     } 



     /*Firebase*/ 
     mFirestore = FirebaseFirestore.getInstance(); 
     mQuery = mFirestore.collection("Empresas").document(mId_Empresa).collection("Profissionais").document(mId_Profissional).collection("Horarios"); 

     mCardHorarios = (RecyclerView) findViewById(R.id.cardListaHorariosProf); 

     mAdapter = new HorariosProfissionalAdapter(mQuery, this){ 

      @Override 
      protected void onDataChanged() { 

       if (getItemCount() == 0) { 
        mCardHorarios.setVisibility(View.GONE); 
        //mTxtVazio.setVisibility(View.VISIBLE); 

       } else { 
        mCardHorarios.setVisibility(View.VISIBLE); 


       } 

      } 
     }; 

     mCardHorarios.setLayoutManager(new LinearLayoutManager(this)); 
     mCardHorarios.setAdapter(mAdapter); 


    } 



    @Override 
    public void onStart() { 
     super.onStart(); 

     // Start listening for Firestore updates 
     if (mAdapter != null) { 
      mAdapter.startListening(); 
     } 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     if (mAdapter != null) { 
      mAdapter.stopListening(); 
     } 
    } 

    @Override 
    public void onHorarioProfissionaisSelected(DocumentSnapshot horario) { 


     HorariosProfissionais idHorario = horario.toObject(HorariosProfissionais.class); 
     Toast.makeText(Agenda_profissionais.this, "Horario selecionado: " +idHorario.getHora(), Toast.LENGTH_LONG).show(); 


    } 


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

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      // Respond to the action bar's Up/Home button 
      case android.R.id.home: 
       finish(); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


    @Override 
    public void onBackPressed() { 

     finish(); 

    } 

} 

Antwort

0

Lösung

public void bind(final DocumentSnapshot snapshot, 
         final OnHorariosProfissionaisListner listener) { 

      final HorariosProfissionais ref = snapshot.toObject(HorariosProfissionais.class); 
      String empresa = ref.getId_Emp(); 

      mProgress = new ProgressDialog(itemView.getContext()); 
      mProgress.setMessage("testando...."); 
      mProgress.show(); 

      /*Checar Horario disponivel*/ 
      final FirebaseFirestore mDB = FirebaseFirestore.getInstance(); 
      CollectionReference mDBHorarios = mDB.collection("Empresas").document(empresa).collection("Agendamentos"); 

      mDBHorarios.whereEqualTo("profissional_id", ref.getId_Prof()).whereEqualTo("agenda_hora", ref.getHora()) 
        .get() 
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
         @Override 
         public void onComplete(@NonNull Task<QuerySnapshot> task) { 

          if (task.isSuccessful()) { 

           for (DocumentSnapshot document : task.getResult()) { 

            Agendamentos doc = document.toObject(Agendamentos.class); 

            String horaAgenda = doc.getAgenda_hora(); 
            /*Cor do fundo*/ 
            if (horaAgenda.equals(ref.getHora())){ 

             fundoHora.setBackgroundColor(Color.parseColor("#E0E0E0")); 
             statusHoraAgenda = true; 



            } 

           } 

           mProgress.dismiss(); 

          } else { 

          } 
         } 
        });